获得徽章 0
- 1. JavaScript 全局环境分为两个部分:"声明环境记录"和"对象环境记录"
2. "声明环境记录"会把在当前作用域中声明的变量以key-value的形式保存起来,一组key-value对也叫一个binding
3. "对象环境记录"和"声明环境记录"相似,不过还多做了一件事,就是把这些bindings同步到一个对象中 (即全局对象),因此这些变量不仅可以通过变量名访问到,还可以通过全局对象的属性访问到
4. var和function关键字声明的变量会在"对象环境记录"中创建bindings (图一)
5. const, let和class关键字声明的对象会在"声明环境记录"中创建bindings (图一)
6. 修改/访问变量值时,"声明环境记录"的优先级更高 (图二)
7. 为什么 JavaScript 全局环境会分成两个部分呢?一般认为全局对象是个错误, 所以在新规范中的const, let, class等只会在"声明环境记录"中创建 bindings。展开413