在JavaScript中使用!= null和!= undefined之间有什么功能上的区别?

时间:2019-02-13 16:01:18

标签: javascript null operators undefined null-check

在javascript中,使用!= null!= undefined有什么功能上的区别?

是否可以为myVar分配一个值,这将导致这两行代码对不同的结果求值?

console.log(myVar != undefined)
console.log(myVar != null)

如果您对这两个操作的执行情况一无所知,我也很想知道。

非常感谢。

4 个答案:

答案 0 :(得分:2)

没有功能上的区别。 x != undefinedx != null都仅在falsexnull时才得出undefined。对于x的所有其他值,它们都评估为true。

也没有性能差异。

答案 1 :(得分:1)

没有区别,正如您在下表中看到的,用于JS ==测试(关注空值/未定义的行/列)(src:here)一样。因此,仅当myVar!=null的值不是myVar而不是null(与undefined相同)时,myVar != undefined才是真

enter image description here

看起来两者具有相似的性能(我在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;

enter image description here

答案 2 :(得分:0)

==!=运算符进行“类型转换”以仅比较值本身。那么不,在这种情况下,使用“ undefinied”或“ null”没有区别,它们都表示“空”。

但是,如果改用===!==,它将检查类型和值,而不会进行任何类型转换。这两行的结果会有所不同。

myVar = null;
console.log(myVar !== undefined) //true
console.log(myVar !== null) //false

答案 3 :(得分:-2)

不要混淆undefinednull,因为它们不是同一件事。

空:

  

值null表示有意缺少任何对象值。它是JavaScript的原始值之一。

未定义:

  

尚未分配值的变量的类型为undefined。如果要评估的变量没有分配的值,则方法或语句也将返回未定义。如果未返回值,则函数返回undefined。


如果变量由既不是null也不是undefined的值组成,则您的条件没有差别。

const value = 3;

console.log(value !== undefined) //true
console.log(value !== null) //true

但是,测试变量是null还是undefined的更好方法是使用!取反,因为值nullundefined将是解析为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);