是'未定义'虚假或什么都没有

Is 'not defined' falsy or nothing?

本文关键字:什么 未定义      更新时间:2024-03-13

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

var a;

然后这样做:

if(a){
    // doing stuff
}

它吐出了这个错误:

ReferenceError: a is not defined

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

请不要告诉我使用typeof

编辑:

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

检查是否存在未定义且未抛出的ReferenceError like so:

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

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

var a = a;

在这种情况下,如果定义了,则不会发生任何更改,否则就是未定义的。

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

这个出了什么问题

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

更新:或者,您可以使用

if(a==void 0) // undefined

或者,您可以尝试以下操作:

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