Es6学习笔记,有关于let/const以及块级作用域的相关点。
let
let不存在变量提升1234567// var 的情况console.log(foo); // 输出undefinedvar foo = 10;// let 的情况console.log(bar); // 报错ReferenceErrorlet bar = 10;
使用let会造成暂时性死区,即在此块级的变量,一旦与变量绑定,则不受外部影响。
ES6 明确规定,如果区块中存在let
和const
命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
在代码块内,使用let
命令声明变量之前,该变量都是不可用的。
不要再块级作用域内声明函数,在ES6中无法运行,因为其无法被提前声明(使用{}的块级作用域列外)。1234567891011// 浏览器的 ES6 环境function f() { console.log('I am outside!'); }(function () { var f = undefined; if (false) { function f() { console.log('I am inside!'); } } f();}());// Uncaught TypeError: f is not a function