JavaScript任何对象的属性都返回undefined,为什么?

时间:2014-04-13 04:16:57

标签: javascript object properties global-variables

我正在研究JS,并想知道为什么任何未定义的JS Object属性返回 undefined

window.myVar // undefined

现在如果我尝试访问全局属性 myVar (与 window.myVar 相同),JS会抛出错误:

myVar // error: myVar is not defined

注意用

初始化变量
var myVar; // undefined

所以,有人可以解释一下这背后的过程是什么?

3 个答案:

答案 0 :(得分:1)

  

我正在研究JS,并想知道为什么任何未定义的JS Object属性返回undefined。

Because the specification says so:

  
      
  1. desc 成为使用属性名 P 调用 O [[GetProperty]]内部方法的结果。< / p>

  2.   
  3. 如果 desc undefined,请返回undefined

  4.   

虽然全局变量成为全局对象的属性,但尝试解析变量并尝试访问对象的属性是两回事。

如果您尝试访问未定义的变量a reference error is thrown

  
      
  1. 如果Type(V)不是Reference,则返回V.

  2.   
  3. 让base成为调用GetBase(V)的结果。

  4.   
  5. 如果是IsUnresolvableReference(V),则抛出ReferenceError异常。

  6.   

关于它没有太多可说的。这是因为语言是以这种方式定义的。如果你问的是这背后的原因是什么,那么你必须问一个真正从事语言规范工作的人。

答案 1 :(得分:1)

Felix是正确的,这可能有助于澄清事情:Understanding undefined and preventing reference errors

答案 2 :(得分:0)

根据variable by mdn

A variable declared using the var statement with no initial value 
specified has the value undefined.

undefined
myVar
var myVar;