!== vs!=
好的,所以我在使用我的Node.js应用程序时在我的Sublime编辑器上安装了Linter。 它发现的其中一件事说我应该总是使用!==来比较一个对象为null(我通常使用!=)。
所以我改变了它......但后来我注意到!==不工作。
我有这种情况:
var x = null;
if (x !== null)
console.log('x is not equal to null');
当我使用!==控制台打印该行时,即使它显然不是真的。 当我将它切换回!=它表现正常。
所以我的问题是,为什么林特告诉我使用!==如果它没有做我想要的东西...
我知道我错过了一些东西。
更新好吧,所以它可能比我原先想象的要复杂一些。 在我真正的代码中,我使用!==与node.js GLOBAL对象。
console.log('Global User: ' + GLOBAL.User);
if (GLOBAL.User != null)
{
console.log('User is not null');
}
即使GLOBAL.User为空时,控制台行也会打印...
也许这个对象是特殊的?
更新2
好的,在阅读完注释并查看我的代码后,我已经了解到!==如果对象未定义而不是null,可能会出现问题(请参阅此文章:为什么null是对象,null和undefined之间有什么区别?)。
所以在我的情况下,取决于何时调用此方法,我的全局变量可能是未定义,空值或全部数据。 我将返回并更新我的代码,以便它永远不会被定义,然后!==将一直工作。
谢谢您的帮助!
谢谢,大卫
您的global.User
undefined
,不为null
。 当使用==
他们评估的结果是相等的,但用===
,你比较的项目需要是相同的类型。 undefined
的类型为undefined
和null
具有类型object
。
undefined
和null
非常相似,但它们通常意味着两个完全不同的东西。 通常, undefined
是某个值没有赋值的结果,而null
有一个值,并且该值显式设置为“nothing”。
在JavaScript中不唯一的值是NaN
。 如果null === null
为false
,那么您的JavaScript引擎会出现严重问题;)
为了确保您的条件语句写得很好,请始终使用大括号。
var x = null;
if (x !== null) {
console.log('x is not equal to null');
}
它更简单
var x = null;
if (x) 6
if (!x) 7
结果是
undefined
7
链接地址: http://www.djcxy.com/p/76349.html
上一篇: !== vs !=
下一篇: JavaScript: What is the difference between `if (!x)` and `if (x == null)`?