我想检查变量是否有定义。例如,下面的代码会抛出一个未定义的错误

alert( x );

我如何捕捉这个错误?


当前回答

我经常这样做:

function doSomething(variable)
{
    var undef;

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

其他回答

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

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

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

我经常这样做:

function doSomething(variable)
{
    var undef;

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

这个错误告诉你x根本不存在!它没有被声明,这与被赋值是不同的。

var x; // declaration
x = 2; // assignment

如果你声明了x,就不会出现错误。你会得到一个警告,说未定义,因为x存在/已经声明,但还没有被赋值。

要检查变量是否已声明,您可以使用typeof,任何其他检查变量是否存在的方法都会引发与初始时相同的错误。

if(typeof x  !==  "undefined") {
    alert(x);
}

这是检查存储在x中的值的类型。只有当x尚未声明或已声明且尚未赋值时,它才会返回undefined。

一个更简单、更简洁的版本是:

if (!x) {
   //Undefined
}

OR

if (typeof x !== "undefined") {
    //Do something since x is defined.
}

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

Var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);

//var a = "hallo world"; Var a = !a ?文档。写(“我不知道‘a’”):文档。写("a = " + a);