!== vs !=
Ok, so I installed Linter on my Sublime editor while working on my node.js app. One of the things that it caught said that I should always use !== to compare an object to null (I usually use != ).
So I changed it...but then I noticed that the !== wasn't working.
I have this scenario:
var x = null;
if (x !== null)
console.log('x is not equal to null');
When I use the !== the console printed that line even though it was obviously not true. When I switched it back to != it behaved normally.
So my question is, why is linter telling me to use !== if it doesn't do what I want it to...
I know I am missing something.
UPDATE Ok, so it may be a bit more complicated than I originally thought. In my real code I was using !== with the node.js GLOBAL object.
console.log('Global User: ' + GLOBAL.User);
if (GLOBAL.User != null)
{
console.log('User is not null');
}
The console line prints even when GLOBAL.User is null...
Perhaps this object is special?
Update 2
Ok, so after reading through the comments and looking at my code, I have learned that !== can have issues if the object is undefined rather than null (see this post: Why is null an object and what's the difference between null and undefined?).
So in my case, my global variable could be, depending on when this method is called, undefined, null, or full of data. I am going to go back and update my code so that it is never undefined and then !== will work consistently.
Thanks for the help!
Thanks, David
Your global.User
is undefined
, not null
. When using ==
they evaluate to equal, but with ===
the items you are comparing need to be the same type. undefined
has the type undefined
and null
has the type object
.
undefined
and null
are very similar, but they generally mean two very different things. Usually undefined
is the result when something has had no value assigned to it, whereas null
has a value, and the value is explicitly set to "nothing".
The only value that doesn't equal itself in JavaScript is NaN
. If null === null
is false
, then your JavaScript engine has serious problems ;)
To make sure your conditional statement is well written, always use the braces.
var x = null;
if (x !== null) {
console.log('x is not equal to null');
}
It is even more simple
var x = null;
if (x) 6
if (!x) 7
the result is
undefined
7
链接地址: http://www.djcxy.com/p/76350.html
上一篇: 检查变量是否未定义
下一篇: !== vs!=