JavaScript:测试未定义的throws var没有定义错误......?

时间:2011-02-20 19:50:07

标签: javascript undefined

这是我偶尔在JS中看到的奇怪 - 也许有人可以阐明它。

我在变量上对undefined进行测试:

if (x !== 'undefined'){}

甚至

if (typeof x !== 'undefined'){}

浏览器仍然会抛出错误:

ReferenceError: x is not defined

甚至

if (x) {} 

抛出错误。

这是我正在检查的框架级全局变量,因此可能与不同的范围有关。 (没有对全局变量的批评 - 再次,它是我正在测试的框架的存在)。

3 个答案:

答案 0 :(得分:12)

这很奇怪。怎么样:

if (window['x']) {
   // It's defined
}

以上是否有效?此外,这是什么浏览器或JavaScript解释器?

答案 1 :(得分:3)

@Anurag是对的,第二个条件不应该是错误。

if (typeof x !== 'undefined'){// won't through error even if x is not declared
}

我猜问题是x未被声明为变量。如果你声明它但保持未分配,则将其视为未定义,并且不会因错误而被视为未声明。

var x;
if (x !== undefined){// won't through error
}

对象字段的处理方式不同

if(window.x !== undefined){// won't through error

}

在这种情况下似乎x在运行时声明,如果找不到, 所以返回undefined

希望这有帮助!

答案 2 :(得分:1)

您的问题是undefined !== 'undefined'