为了账号安全,请及时绑定邮箱和手机立即绑定

let申明的全局变量是放哪里了?

let申明的全局变量是放哪里了?

largeQ 2018-08-18 14:51:21
看了阮一峰老师的博客上说 ES6 为了改变这一点,一方面规定,为了保持兼容性,var命令和function命令声明的全局变量,依旧是顶层对象的属性;另一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。 那问题来了不属于顶层对象的属性那属于谁?
查看完整描述

2 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

为什么非要属于谁呢?

如果函数里定义一个变量,这个变量属于函数吗?

function foo() {    var a = 'bar';    return a;
}

你能通过 foo.a 访问 a 的值吗?不能。

全局变量只是不再作为全局对象的属性而存在了,但是依然在全局作用域中


查看完整回答
反对 回复 2018-08-19
  • __Bruce
    __Bruce
    所答非所问,人家问你let声明的全局变量属于谁,你回答就ok。 你说foo.a不能访问a的值,这跟这个问题有个P关系。 a属于foo[[scope]].VO,也就是函数内置属性scope的变量对象(活动对象)当中。 至于楼主问的let声明的全局变量属于谁,在浏览器中(Node不一样),它其实是属于全局作用域的script对象的。图片地址:https://img-blog.csdn.net/20180928173335609?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L05FVkVSX1dC/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70
  • 2 回答
  • 0 关注
  • 2774 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信