1.1 let
作用
声明局部变量
特性
不存在变量提升
不能重复声明
不作为window属性
块级作用域
暂时性死区(声明前不能使用)
1.2 const
作用
生成常量
特性
与let一致
globalThis 对象
Es5模块中的this是window
Es6模块中的this是undefined
函数中的this,如果函数不是作为对象的方法执行,而是单纯作为函数执行,this会指向顶层对象,但是严格模式下this会返回undefined
不管是严格模式,还是普通模式,new Function(‘return this’)(),总是会返回全局对象。但是,如果浏览器用了 CSP(Content Security Policy,内容安全策略),那么eval、new Function这些方法都可能无法使用。
获取顶层对象的方法
// 方法一 (typeof window !== 'undefined' ? window : (typeof process === 'object' && typeof require === 'function' && typeof global === 'object') ? global : this); // 方法二 var getGlobal = function () { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } throw new Error('unable to locate global object'); };