Javascript 检查类型与空检查
我学会了在Javascript中始终像这样检查变量:Javascript 检查类型与空检查,javascript,null,undefined,Javascript,Null,Undefined,我学会了在Javascript中始终像这样检查变量: function x(variable){ if(typeof variable !== "undefined" && variable !== null)... } 一位新同事现在说,这样做更容易、更好: function x(variable){ if(variable != null) } 这真的一样吗?这怎么行 谢谢代码>函数x(变量){ 如果(变量类型!==“未定义”&&variable!==null
function x(variable){
if(typeof variable !== "undefined" && variable !== null)...
}
一位新同事现在说,这样做更容易、更好:
function x(variable){
if(variable != null)
}
这真的一样吗?这怎么行
谢谢代码>函数x(变量){
如果(变量类型!==“未定义”&&variable!==null)。。。
}
上面将检查变量是否存在或是否已声明,如果存在,则不为null。如果您不确定变量声明,那么这是一种很好的方法
函数x(变量){
if(变量!=null)
}
上面只检查变量是否为空。只有在确定变量首先声明的情况下,这才是好的
额外的位
return value === null || value === undefined;
以上为空或未定义
希望这有帮助
干杯 唯一的区别是第一个变量可以安全地用于检查全局变量
> foo // -> ReferenceError
> foo != null // -> ReferenceError
> typeof foo !== 'undefined' && foo !== null // -> false
但在您的示例中,这并不重要,因为空函数参数在JavaScript中总是
未定义
例如:
这里必须使用严格相等运算符而不是标准相等运算符,因为x==undefined
还检查x是否为null,而严格相等运算符则不检查null
不等同于未定义
我认为上面的例子是有效的,因为您没有使用严格的比较。简言之,你们的两个例子并不相同,但可以给出相同的结果。这完全取决于您的逻辑需求是否是严格的比较。建议,我认为if(变量)也应该这样做。不,如果变量真的没有定义怎么办?你会在这里得到一个错误。我注意到一件奇怪的事情:undefined==null是真的。这怎么可能呢?Javascript弱类型,还有更糟糕的例子,例如数组(3)=','总是将类型和值与===
和进行比较==
避免出现undefined==null
为true
var x;
if (x === undefined) {
// these statements execute
}
else {
// these statements do not execute
}
function x(variable){
if(variable != null) // variable would be both null and undefined for comparison
}