看了阮一峰老师的博客上说 ES6 为了改变这一点,一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
那问题来了不属于顶层对象的属性那属于谁?
看了阮一峰老师的博客上说 ES6 为了改变这一点,一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。
那问题来了不属于顶层对象的属性那属于谁?
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答928 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
为什么非要属于谁呢?
如果函数里定义一个变量,这个变量属于函数吗?
你能通过
foo.a
访问a
的值吗?不能。全局变量只是不再作为全局对象的属性而存在了,但是依然在全局作用域中。