在javascript中,使用!= null
和!= undefined
有什么功能上的区别?
是否可以为myVar
分配一个值,这将导致这两行代码对不同的结果求值?
console.log(myVar != undefined)
console.log(myVar != null)
如果您对这两个操作的执行情况一无所知,我也很想知道。
非常感谢。
答案 0 :(得分:2)
没有功能上的区别。 x != undefined
和x != null
都仅在false
为x
或null
时才得出undefined
。对于x
的所有其他值,它们都评估为true。
也没有性能差异。
答案 1 :(得分:1)
没有区别,正如您在下表中看到的,用于JS ==
测试(关注空值/未定义的行/列)(src:here)一样。因此,仅当myVar!=null
的值不是myVar
而不是null
(与undefined
相同)时,myVar != undefined
才是真
看起来两者具有相似的性能(我在Mac OS X 10.13.4 HighSierra上进行了测试:Chrome 71.0.3578,Firefox 65.0.0和Safari 11.1.0-您可以在浏览器here中运行测试)
let myVar1=null;
let myVar2=undefined;
答案 2 :(得分:0)
==
和!=
运算符进行“类型转换”以仅比较值本身。那么不,在这种情况下,使用“ undefinied”或“ null”没有区别,它们都表示“空”。
但是,如果改用===
和!==
,它将检查类型和值,而不会进行任何类型转换。这两行的结果会有所不同。
myVar = null;
console.log(myVar !== undefined) //true
console.log(myVar !== null) //false
答案 3 :(得分:-2)
不要混淆undefined和null,因为它们不是同一件事。
空:
值null表示有意缺少任何对象值。它是JavaScript的原始值之一。
未定义:
尚未分配值的变量的类型为undefined。如果要评估的变量没有分配的值,则方法或语句也将返回未定义。如果未返回值,则函数返回undefined。
如果变量由既不是null
也不是undefined
的值组成,则您的条件没有差别。
const value = 3;
console.log(value !== undefined) //true
console.log(value !== null) //true
但是,测试变量是null
还是undefined
的更好方法是使用!
取反,因为值null
或undefined
将是解析为true。
const undefinedValue = undefined;
const nullValue = null;
console.log(!undefinedValue);
console.log(!nullValue);
这里有一些例子。
var someVariable = undefined;
console.log(someVariable !== undefined, "; undefined !== undefined");
console.log(someVariable !== null, "; undefined !== null");
var someVariable = null;
console.log(someVariable !== undefined, "; null !== undefined");
console.log(someVariable !== null, "; null !== null");
var someVariable = undefined;
console.log(!someVariable);
var someVariable = null;
console.log(!someVariable);