我可以使用(undefined || null)来检查我的变量是null还是未定义?

时间:2014-07-18 07:11:50

标签: javascript null undefined

在我的Javascript代码中,我正在检查变量是否未定义(未定义值,但未定义变量)或null。修剪代码我正在使用运算符。我就是这样做的:

if (myVariable === (undefined || null)) {
    // Do something.
}

我的一位朋友告诉我,我应该把支票分成:

if (myVariable === undefined || myVariable === null) {
    // Do something.
}

这两种方法之间真的有什么区别吗?如果是,我应该使用哪一个以及为什么?

4 个答案:

答案 0 :(得分:3)

首选:if (typeof myVariable === "undefined" || myVariable === null) {

variable === undefined vs. typeof variable === "undefined"

因为使用if (myVariable === undefined) {您的控制台可能会返回错误或警告。

像这样:

ReferenceError: myVariable is not defined
    if (myVariable === undefined) {

enter image description here

PS:(undefined || null)始终 null (因为未定义返回 false )。

答案 1 :(得分:2)

JS中的

===运算符比较了2个操作数(值)。

如果myVariable === (undefined || null)操作数为:myVariable,表示它所持有的值,(undefined || null)表示值null,因为操作数(表达式)必须在比较之前进行评估。 (undefined || null)表达式的计算结果为null

因此,您的解决方案与myVariable === null完全相同。

如果您遵循相同的想法并评估您的朋友提议,您将看到他的建议是正确的。

答案 2 :(得分:1)

这是因为(undefined || null)始终评估为null,因此当myVariable未定义时,您的第一个表达式始终为false。第二个变体是你想要的正确。

答案 3 :(得分:1)

是的,确实如此。对于您的示例,undefined等于false,那么null也等于false,最后一个值从表达式返回。所以这就是为什么第一种方法等于if (myVariable === null) { ... }。第二种方法更可取,但如果你不是一个JavaScript:好的部分'伙计,你可以坚持if (myVariable == null) { ... }if (myVariable == undefined) { ... }