我下面有一个代码,我不清楚

var a = null;
if(a==undefined)
alert("true");
else
alert("false");

当我运行上面的代码时,它会警告为真。

任何人都可以解释这背后的原因或概念是什么?

最佳答案

这是真的,因为 == 松散的 相等运算符,并且 nullundefined 松散相等( null == undefined 为真)。如果使用严格相等运算符 === ,则它们不相等( null === undefined 为 false)。

基本上,松散相等运算符将强制其操作数的类型不同(请参阅规范中的 Abtract Equality Comparison)。例如,0 == "" 是正确的,因为如果您将 "" 强制为一个数字,它就是 0 。严格相等运算符认为不同类型的操作数不相等(参见 Strict Equality Comparison );它不强制。

在浏览器上,还有第三个值是 ==nullundefined : document.alldocument.all 在各种规范操作中的行为类似于 undefined。如此一来,使用 if (document.all) 或类似代码来实现特定于 IE 的方向的非常非常旧的代码在现代浏览器上不会这样做,因为他们避免在以这种方式处理 document.all 的 IE 版本上退出的功能。这是 defined in the spec

关于javascript - 为什么 null == undefined 评估为真?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38630411/

10-13 04:14