1,let和const
let不会出现变量提升,不允许重复声明,弥补了块级作用域,块级作用域使之前广泛使用的立即执行函数(iife)变得不再需要
// IIFE 写法
(function () { var tmp = ...; ... }()); // 块级作用域写法 { let tmp = ...; ... }
es6允许在块级作用域中声明函数(一般最好用函数表达式) 但是不会提升 类似let
const 也不会变量提升 声明的值内容可以改 但是引用不可改 可以用freeze冻结使值的内容不可改