我正在研究JS,并想知道为什么任何未定义的JS Object属性返回 undefined 。
window.myVar // undefined
现在如果我尝试访问全局属性 myVar (与 window.myVar 相同),JS会抛出错误:
myVar // error: myVar is not defined
注意用
初始化变量var myVar; // undefined
所以,有人可以解释一下这背后的过程是什么?
答案 0 :(得分:1)
我正在研究JS,并想知道为什么任何未定义的JS Object属性返回undefined。
Because the specification says so:
让 desc 成为使用属性名 P 调用 O 的
[[GetProperty]]
内部方法的结果。< / p>- 醇>
如果 desc 为
undefined
,请返回undefined
。
虽然全局变量成为全局对象的属性,但尝试解析变量并尝试访问对象的属性是两回事。
如果您尝试访问未定义的变量a reference error is thrown:
如果Type(V)不是Reference,则返回V.
让base成为调用GetBase(V)的结果。
- 醇>
如果是IsUnresolvableReference(V),则抛出ReferenceError异常。
关于它没有太多可说的。这是因为语言是以这种方式定义的。如果你问的是这背后的原因是什么,那么你必须问一个真正从事语言规范工作的人。
答案 1 :(得分:1)
Felix是正确的,这可能有助于澄清事情:Understanding undefined and preventing reference errors
答案 2 :(得分:0)
A variable declared using the var statement with no initial value
specified has the value undefined.
的
undefined
值
myVar
var myVar;