ES6简介

let不会声明在window上

在ES5中我们使用var去声明一个变量,如果在全局作用域变量会被挂载在window全局变量上,如下

但是let是不会声明在window上的,因为ES6内不再有全局变量,ES6的语法中可以的弱化了全局变量

在同级作用域下let不会被重复声明,保证不会被误覆盖

在生产过程中,给变量起名是一件很麻烦的事情,如果生产周期很长,忘记了自己在之前的代码中已经使用过某个变量名,而又重新使用了这个变量名就会造成之前的变量被覆盖,产生让人摸不到头脑的错误

使用let就可以避免这种错误

在同级作用域中let不允许重复声明,否则会报错(变量my已经声明过了)

可以看这样一个问题

结果是undefined

产生这个问题的原因首先看fn()方法内,my变量不会提前声明,所以console.log的时候并不在fn()内并没有my变量,所以this会向上级作用域寻找my变量,上级作用域也就是window,而let并不会声明在window上,所以最后输出的是

undefined

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180325G0Q74R00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券