alert(' '==0);//true弹出的是true,' '应该是false吧?
使用==比较两个不同类型的值会先转换,''会转换为false,false又转换为0,所以0 == 0为true。例如:
==
''
false
0
0 == 0
true
true == 1 //true, true转为1 '2' == 2 //true, '2'转为2
而使用===比较会先判断两个值类型,如果不一样则直接返回false,否则才会比较值,例如:
===
'' === 0 //false
非严格模式下0、空字符串和false归为一类,称为"假值"null和undefined归为一类,称为"空值"
具体可参考
在javascript中,双等号(==)会比较等号两端的内容,比如:"23" == 23,这时候返回的是true;三等号(===)不仅会比较等号两端内容,还会比较等号两端内容的类型,比如:"23" === 23则返回false,等号两端内容相同,但是类型不一致,左边是string类型,右边是number类型。在JavaScript中,非0都为true,非空都为true,""是空,所以为false。
javascript
"23" == 23
"23" === 23
string
number
JavaScript
""
都是「 非1 」,所以是 true
false == 0 。貌似的确是 true.