在undefined上使用严格相等会抛出错误吗?

时间:2014-01-02 14:08:44

标签: javascript undefined

我只是澄清mozilla.org中的JavaScript文档与实际体验之间的不匹配。

enter image description here

我自己测试过,但效果很好。

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。这就是造成混乱的原因。在前面的部分中,它将“未定义”称为已声明变量但未赋值的状态:

enter image description here

3 个答案:

答案 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