ES6 let,cont 声明变量不再赋值给window

先看一道题

let len = 10;
function fn() {
    console.info(this.len)
}
fn();
let Person = {
    len: 5,
    say: function() {
        fn();
        arguments[0]();
    }
}
Person.say(fn);

三处fn的结果都是undefined;
ES5声明变量只有两种方式:var和function。
ES6有let、const、import、class再加上ES5的var、function共有六种声明变量的方式。
还需要了解顶层对象:浏览器环境中顶层对象是window,Node中是global对象。
ES5中,顶层对象的属性等价于全局变量。
ES6中,有所改变:var、function声明的全局变量,依然是顶层对象的属性;let、const、class声明的全局变量不属于顶层对象的属性

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。