比较null -!== vs!= in JavaScript

vybvopom  于 2023-06-04  发布在  Java
关注(0)|答案(3)|浏览(108)

好了,我在我的node.js应用程序上工作时在我的Sublime编辑器上安装了Linter。它抓到的一件东西说我应该一直用!==来比较一个对象和null(我通常使用!=)。
所以我改了...但后来我注意到!==不工作。

更新好的,所以它可能比我最初想象的要复杂一点。在我使用的真实的代码中!==使用node.js GLOBAL对象。

console.log('Global User: ' + GLOBAL.User);

if (GLOBAL.User != null)
{
    console.log('User is not null');
}

即使GLOBAL.User为null,控制台行也会打印...
也许这个东西很特别?
好了,在阅读了注解并查看了我的代码之后,我已经学会了!如果对象是undefined而不是null,==可能会有问题(请参阅这篇文章:Why is null an object and what's the difference between null and undefined?)。
所以在我的例子中,我的全局变量可能是undefined,null,或者充满数据,这取决于这个方法被调用的时间。我将回去更新我的代码,这样它就永远不会是未定义的,然后!==会一直工作。

zf2sa74q

zf2sa74q1#

您的global.Userundefined,而不是null。当使用==时,它们的计算结果是相等的,但是使用===时,您正在比较的项目需要是相同的类型。undefined的类型为undefinednull的类型为object
undefinednull非常相似,但它们通常意味着两个非常不同的东西。通常情况下,undefined是没有赋值的结果,而null有一个值,并且该值被显式设置为“无”。

thtygnil

thtygnil2#

JavaScript中唯一不等于自身的值是NaN。如果null === nullfalse,那么你的JavaScript引擎有严重的问题;)
为了确保你的条件语句写得很好,总是使用大括号。

var x = null;
if (x !== null) {
    console.log('x is not equal to null');
}
wpcxdonn

wpcxdonn3#

就更简单了

var x = null;
    if (x) 6 
    if (!x) 7

结果是

undefined
7

相关问题