“未定义”是假的还是什么都没有?

时间:2012-07-25 16:22:23

标签: javascript boolean-logic

这让我很生气: 如果我不这样做:

var a;

然后这样做:

if(a){
    // doing stuff
}

它吐出了这个错误:

ReferenceError: a is not defined

那么如何检查变量是否已定义!

请不要告诉我使用typeof

编辑:

a有时由库定义。我想检查库是否定义了它,如果不是我定义它,所以我仍然可以在我的代码中使用它!

4 个答案:

答案 0 :(得分:3)

检查undefined而不抛出ReferenceError,如下所示:

if (typeof window.a == "undefined") {
    // do something
}

答案 1 :(得分:2)

如果要确保声明a,并且不会导致任何引用错误问题。您可以添加重新声明声明。

var a = a;

在这种情况下,如果定义了a,则没有任何变化,否则它是未定义的。

注意:这仅在a处于全局范围内时有效,请查看注释以获取更多详细信息。

答案 2 :(得分:0)

这有什么问题

if(typeof a!='undefined')
{
    // a is defined
}
else
{
    // a is not defined
}

更新:您也可以使用

if(a==void 0) // undefined

答案 3 :(得分:0)

或者,你可以试试这个:

if( !window.hasOwnProperty('a') ){    
    window.a = 'some definition here';
}