Chrome在定义检查时的奇怪行为:ReferenceError:x未定义

时间:2014-01-18 07:28:23

标签: javascript google-chrome

我想知道这个奇怪的铬行为来自它的最后一次更新。当我想检查是否定义了变量时,它会抛出一个未被捕获的错误,如下所示:

if(x) { alert('x is defined.'); }

这一行抛出:

ReferenceError: x is not defined

我知道如何处理这个问题但是根据我之前的经验,这应该返回undefined而不是在我的应用程序中抛出异常。 为什么会这样?我认为它应该检查x是否是窗口对象的属性。提前谢谢。

1 个答案:

答案 0 :(得分:3)

未声明的变量与声明的变量但具有未定义的值之间存在差异。仅当您尝试访问尚未声明的变量时才会发出警报。你应该总是声明你的变量,即使你没有初始化它们,例如

var x;
if (x) {
    alert('x is defined');
}

DEMO