美文网首页
let声明变量的作用域问题

let声明变量的作用域问题

作者: CCCCCccccccch | 来源:发表于2020-05-27 15:59 被阅读0次

    有这么一个情况:

    看起来很简单,fn里的this是指向window的,但实际上打印输出结果是undefined,为什么会出现这种情况,因为ES6与ES5在声明变量方便有差异。

    1、ES5声明变量只有两种方式:var和function。

    2、ES6有let、const、import、class再加上ES5的var、function共有六种声明变量的方式。

    3、浏览器环境中顶层对象是window,Node中是global对象。

    4、ES5中,顶层对象的属性等价于全局变量。

    5、ES6中有所改变:var、function声明的全局变量,依然是顶层对象的属性,会挂载到window上。let、const、class声明的全局变量不再属于顶层对象的属性,全局变量和顶层对象的属性开始分离、脱钩。所以上面let声明的变量不是window对象的属性,也不会有变量提升。

    相关文章

      网友评论

          本文标题:let声明变量的作用域问题

          本文链接:https://www.haomeiwen.com/subject/zwvwahtx.html