var a = 2;
var b = "2";
if(a == b){
alert("正确");
}
会正常输出
因为双等号比较时,不会比较类型。左侧是number,比较时,右侧的string会调用其valueOf尝试转换为number,转换成功则返回对应的原始类型number,转换失败则调用toString返回字符串。再与左侧的值进行比较。
****Javscript*的隐式转换原理***,砖头【Javscript权威指南】有说。
原理直接上链接:
http://segmentfault.com/a/1190000000650129
恶补一下基础吧
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
== 比较之前,如果两个操作数类型不同,它会自行转换操作数类型,然后在比较。