好的,所以我在处理我的 node.js 应用程序时在我的 Sublime 编辑器上安装了 Linter。它捕获的一件事是我应该始终使用 !== 将对象与 null 进行比较(我通常使用 != )。
所以我改变了它......但后来我注意到 !== 不起作用。
我有这种情况:
var x = null;
if (x !== null)
console.log('x is not equal to null');
当我使用 !== 时,控制台会打印该行,即使它显然不是真的。当我将其切换回 != 时,它表现正常。
所以我的问题是,为什么 linter 告诉我使用 !== 如果它不符合我的要求...
我知道我错过了一些东西。
更新 好的,所以它可能比我最初想象的要复杂一些。在我的真实代码中,我使用 !== 和 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 和未定义之间的区别? )。
因此,在我的情况下,我的全局变量可能是未定义的、空的或充满数据的,具体取决于何时调用此方法。我将返回并更新我的代码,使其永远不会未定义,然后 !== 将始终如一地工作。
谢谢您的帮助!
谢谢,大卫