ES6语法知识点
let/const(常用)
let,const用语声明变量,用来替代老语法的var关键字,与var不同的是,let/const会创建一个块级作用域(如图)
如图在块级作用域外部无法获取已声明的let
案例:if/for关键字结合let/const创建的块级作用域
for循环三部分,第一部分包含变量声明(在for循环中智慧执行一次),第二部分包含循环退出的条件,第三部分包含每次循环最后要执行的表达式
使用let/const关键字声明变量的for循环时,除了会创建块级作用域,let/const还会将声明的变量绑定到每个循环中,可以理解为
let/const中的for循环给每次循环创建一个块级作用域:
暂时性死区
使用let/const声明的变量,从一开始就形成了封闭作用域,在声明变量之前是无法使用这个变量的,这个特点也是为了弥补var的缺陷(var声明的变量有
变量提升)暂时性死区其实是为了防止ES5以前在变量声明前就使用这个变量,这是因为var的变量提升的特性导致一些不熟悉var原理的开发者习以为常的以为变量可以先使用在声明,从而埋下一些隐患
const
const关键字用于声明一个常量(即不会改变的量)。
const与let的区别:
- const声明变量的时候必须赋值,否则会报错,同样使用const声明的变量被修改了也会报错
2.const声明变量不能改变,如果声明的是一个引用类型,则不能改变它的内存地址
tips:根据ES6规定的特点,在日常开发中即便没有在块级作用域中声明变量,let/const声明的变量也不会变为全局变量
如图let声明的变量x是在一个叫script的作用域下的,而var声明的变量因为变量提升所以提升到了全局变量window对象中,这使我们能放心的使用新语法,不用担心污染全局的window对象
建议
参考资料:ES6语法知识点