如何在JavaScript中检查未定义的变量


Answers

真正测试变量是否undefined的唯一方法是执行以下操作。 请记住,undefined是JavaScript中的一个对象。

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

这个线程中的其他一些解决方案会引导你相信一个变量是未定义的,即使它已被定义(例如,值为NULL或0)。

Question

我想检查变量是否已定义。 例如,以下引发一个未定义的错误

alert( x );

我怎样才能捕捉到这个错误?




接受的答案是正确的。 只是想添加一个选项。 你也可以使用try ... catch块来处理这种情况。 一个怪异的例子:

var a;
try {
    a = b + 1;  // throws ReferenceError if b is not defined
} 
catch (e) {
    a = 1;      // apply some default behavior in case of error
}
finally {
    a = a || 0; // normalize the result in any case
}

注意catch块,这有点麻烦,因为它创建了一个块级作用域。 当然,这个例子非常简单,以回答问题,它不包括错误处理的最佳实践;)。




我经常这样做:

function doSomething(variable)
{
    var undef;

    if(variable === undef)
    {
         alert('Hey moron, define this bad boy.');
    }
}



另一个潜在的“解决方案”是使用window对象。 它避免了浏览器中的参考错误问题。

if (window.x) {
    alert('x exists and is truthy');
} else {
    alert('x does not exist, or exists and is falsy');
}



您也可以使用三元条件运算符:

var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);

//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);