我下面有一个代码,我不清楚
var a = null;
if(a==undefined)
alert("true");
else
alert("false");
当我运行上面的代码时,它会警告为真。
任何人都可以解释这背后的原因或概念是什么?
最佳答案
这是真的,因为 ==
是 松散的 相等运算符,并且 null
和 undefined
松散相等( null == undefined
为真)。如果使用严格相等运算符 ===
,则它们不相等( null === undefined
为 false)。
基本上,松散相等运算符将强制其操作数的类型不同(请参阅规范中的 Abtract Equality Comparison)。例如,0 == ""
是正确的,因为如果您将 ""
强制为一个数字,它就是 0
。严格相等运算符认为不同类型的操作数不相等(参见 Strict Equality Comparison );它不强制。
在浏览器上,还有第三个值是 ==
到 null
和 undefined
: document.all
。 document.all
在各种规范操作中的行为类似于 undefined
。如此一来,使用 if (document.all)
或类似代码来实现特定于 IE 的方向的非常非常旧的代码在现代浏览器上不会这样做,因为他们避免在以这种方式处理 document.all
的 IE 版本上退出的功能。这是 defined in the spec 。
关于javascript - 为什么 null == undefined 评估为真?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38630411/