search

Home  >  Q&A  >  body text

javascript - js中数字和字符串一样的情况下比较为什么会是true;

var a = 2;
var b = "2";

if(a == b){
alert("正确");
}
会正常输出

阿神阿神2836 days ago292

reply all(6)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 15:26:55

    == 比较之前,如果两个操作数类型不同,它会自行转换操作数类型,然后在比较。

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:26:55

    因为双等号比较时,不会比较类型。左侧是number,比较时,右侧的string会调用其valueOf尝试转换为number,转换成功则返回对应的原始类型number,转换失败则调用toString返回字符串。再与左侧的值进行比较。

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:26:55

    要用三等号,双等号不比较类型

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:26:55

    要使用三个=号,即“===”

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:26:55

    ****Javscript*的隐式转换原理***,砖头【Javscript权威指南】有说。
    原理直接上链接:
    http://segmentfault.com/a/1190000000650129

    恶补一下基础吧

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 15:26:55

    用 2 === '2'

    reply
    0
  • Cancelreply