时不我待cr7

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的区别:

  1. const声明变量的时候必须赋值,否则会报错,同样使用const声明的变量被修改了也会报错

 

  2.const声明变量不能改变,如果声明的是一个引用类型,则不能改变它的内存地址

 

tips:根据ES6规定的特点,在日常开发中即便没有在块级作用域中声明变量,let/const声明的变量也不会变为全局变量

 


如图let声明的变量x是在一个叫script的作用域下的,而var声明的变量因为变量提升所以提升到了全局变量window对象中,这使我们能放心的使用新语法,不用担心污染全局的window对象

建议

一般的变量声明使用let关键字,而当声明一些配置项(类似接口地址,npm依赖包,分页器默认页数等一些一旦声明后就不会改变的变量)的时候可以使用const,来显式的告诉项目其他开发者,这个变量是不能改变的(const声明的常量建议使用全大写字母标识,单词间用下划线)

 

 

 

 

 

 

参考资料:ES6语法知识点

posted on 2019-10-29 19:31  时不我待cr7  阅读(211)  评论(0编辑  收藏  举报

导航