我只是在“ == vs ===”上阅读了这个出色的question和顶部answer

var x = undefined;


当检查x是否真正等于undefined时,以下两项均有效。

if(typeof x == "undefined") {
    console.log("typeof x == \"undefined\"");
}

if(x === undefined) {
    console.log("x === undefined");
}


输出:


  typeof x ==“未定义”
  
  x ===未定义


一种方法比另一种更惯用吗?如果是这样,为什么?

最佳答案

我想说,如果您可以控制x的可能值范围,那么检查x === undefined是最常见的方法。例如,如果您有一个返回结果的函数,或者undefined遇到错误。

否则,您应该使用typeof x == 'undefined'

需要注意的是,某些表达式和变量可以是undefined,因为它们只是未定义,而其他表达式和变量则明确定义为undefined

如果您尝试这样做:

var x = undefined;
if(typeof x == "undefined") // This works
if(x === undefined) // This works
if(typeof y == "undefined") // This works
if(y === undefined) // This does not work and throws a ReferenceError


因此,基本上,如果您不必控制variable's range,因为不必实现异常处理,则使用typeof更安全,更轻松。

关于javascript - 使用`typeof ==`和`===`检查未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20791383/

10-13 01:38