Typeof check vs null check

时间:2014-08-12 07:50:19

标签: javascript null undefined

我已经学会了总是在Javascript中检查变量,如下所示:

function x(variable){
   if(typeof variable !== "undefined" && variable !== null)...
}

一位新同事现在说这样做更容易也更好:

function x(variable){
   if(variable != null)
}

这真的一样吗?这怎么可行?

由于

3 个答案:

答案 0 :(得分:1)

Null和undefined是JavaScript中的两个primitive datatypes


示例From Mozilla MDN

var x;
if (x === undefined) {
   // these statements execute
}
else {
   // these statements do not execute
}

这里必须使用严格相等运算符而不是标准相等运算符,因为x == undefined也检查x是否为空,而严格相等则不是。 null不等同于undefined


function x(variable){
   if(variable != null) // variable would be both null and undefined for comparison
}

我觉得上面的例子很有效,因为你没有使用严格的比较。因此,简而言之,您的示例都不尽相同,但可以给出相同的结果。这完全取决于您的逻辑要求是否是严格的比较。

答案 1 :(得分:0)

function x(variable){ if(typeof variable !== "undefined" && variable !== null)... }

上面将检查变量是否存在或是否已声明,如果是,则不为null。如果您不确定变量声明,这是一个很好的方法。

function x(variable){ if(variable != null) }

上面只检查变量是否为空。只有在确定变量首先被声明时才有用。

额外的一点,

return value === null || value === undefined;

上面是null或undefined。

希望这有帮助。

干杯!

答案 2 :(得分:0)

唯一的区别是第一个可以安全地用于检查全局变量

> foo // -> ReferenceError
> foo != null // -> ReferenceError
> typeof foo !== 'undefined' && foo !== null // -> false

但是在你的例子中它并不重要,因为空函数参数总是undefined