我只是澄清mozilla.org中的JavaScript文档与实际体验之间的不匹配。
我自己测试过,但效果很好。
var x;
if (typeof x === 'undefined') {
console.log("x is undefined, checked via typeof");
}
if(x === undefined){
console.log("x is undefined, checked via strict equality");
}
导致这个:
x is undefined, checked via typeof
x is undefined, checked via strict equality
我正在寻找文档所指的ReferenceError。在Firefox和Chrome中都尝试过。
请说清楚。文档不正确,或者我在这里遗漏了一些东西。
P.S。这就是造成混乱的原因。在前面的部分中,它将“未定义”称为已声明变量但未赋值的状态:
答案 0 :(得分:7)
您定义了x
,因此您的代码与文档不符。
答案 1 :(得分:3)
我们需要区分:
undefined
和在您的情况下,您拥有变量声明 var x
,而该示例没有该声明。
该示例显示大多数使用未声明的变量名称的操作都会导致引用错误,但typeof
将容忍未声明的变量名称。
答案 2 :(得分:2)
请改为尝试:
$ node
> x === undefined
ReferenceError: x is not defined
Ctrl + C
$ node
> typeof x === 'undefined'
true