繁体   English   中英

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

[英]JavaScript any object's property returns undefined, why?

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

window.myVar // undefined

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

myVar // error: myVar is not defined

注意初始化变量与

var myVar; // undefined

那么,有人可以解释一下这背后的过程吗?

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

因为规范是这样说的:

  1. desc为使用属性名称P调用O[[GetProperty]]内部方法的结果。

  2. 如果descundefined ,则返回undefined

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

如果您尝试访问未定义的变量, 则会引发参考错误

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

  2. 令base为调用GetBase(V)的结果。

  3. 如果IsUnresolvableReference(V),则引发ReferenceError异常。


真的没有太多要说的了。 之所以这样,是因为语言是通过这种方式定义的。 如果您要问这背后的原因是什么,那么您必须问一个实际在语言规范上工作的人。

Felix是正确的,这可能有助于阐明以下内容: 理解未定义并防止引用错误

根据mdn的变量

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

所以undefined的值

myVar
var myVar;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM