JavaScript:未定义的值赋值
JavaScript: Value assignment to undefined
案例1
假设我有:
a = {}
a.x // would return "undefined"
但是我可以有
b = a.x
控制台将只返回一个undefined
。
案例2
但是,如果我有:
a // would throw an error saying "ReferenceError: a is not defined"
我不能有
b = a // console throws tantrum insisting "ReferenceError: a is not defined"
问题
有什么区别?毕竟两者都是undefined
。为什么第一个不抛出错误?
所以为了让自己更清楚:
╭────────────────────┬────────────────────────┬───────────────────────╮
| Resolution | Property Resolution | Variable Resolution |
╞════════════════════╪════════════════════════╪═══════════════════════╡
| Subjective | Objects | LexicalEnvironment |
|────────────────────|────────────────────────|───────────────────────|
| Rule of Procession | Follow Prototype Chain | Follow Scope Chain |
└────────────────────┴────────────────────────┴───────────────────────┘
感谢@RobG。引用他提供的有用链接:
本规范中使用了两种环境记录值:声明性环境记录和对象环境记录。声明性环境记录用于定义ECMAScript语言语法元素的效果,如FunctionDeclaration、VariableDeclarations和Catch子句,这些子句直接将标识符绑定与ECMAScript语言值相关联。对象环境记录用于定义ECMAScript元素(如Program和WithStatement)的效果,这些元素将标识符绑定与某些对象的属性相关联。
相关文章:
- "日期“;AJAX请求返回的类型值未定义
- x可编辑的post值未定义
- 尝试通过 Angular 控制器使用 Google Geocode API 进行地理编码,值未定义
- 为什么在循环中返回时函数返回值未定义
- Javascript值未定义,函数在赋值后运行
- 未检索到输入字段的值:未定义的对象
- Javascript生成的文本框值=未定义
- Reactjs-值未定义
- getImageData中的RGB值未定义
- 使用deferred.resolve(Value)返回给my.then()的值未定义
- 为什么简码输出中的值“未定义” - tinyMCE
- AngularJS:如果值未定义,如何不呈现属性
- js-cookie 值未定义
- 为什么 JavaScript 函数的返回值未定义
- 函数返回值未定义
- 隐藏的输入值未定义
- 返回的 Ajax 响应指出其属性值未定义
- 函数的第一个返回值未定义
- Google Apps 脚本 - UiApp ServerHandler 回调函数 - 值未定义
- Javascript 输入字段值未定义