这是我偶尔在JS中看到的奇怪 - 也许有人可以阐明它。
我在变量上对undefined进行测试:
if (x !== 'undefined'){}
甚至
if (typeof x !== 'undefined'){}
浏览器仍然会抛出错误:
ReferenceError: x is not defined
甚至
if (x) {}
抛出错误。
这是我正在检查的框架级全局变量,因此可能与不同的范围有关。 (没有对全局变量的批评 - 再次,它是我正在测试的框架的存在)。
答案 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'