我已经学会了总是在Javascript中检查变量,如下所示:
function x(variable){
if(typeof variable !== "undefined" && variable !== null)...
}
一位新同事现在说这样做更容易也更好:
function x(variable){
if(variable != null)
}
这真的一样吗?这怎么可行?
由于
答案 0 :(得分:1)
Null和undefined是JavaScript中的两个primitive datatypes。
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