ES6初探之let和const

定义变量的方式:

let和const

let相当于之前的var,但是有所不同

const用于定义常量,定义好了就不能改变

ES6初探之let和const

ES6初探之let和const

ES6初探之let和const

ES6初探之let和const

这里就可以看到let和var的不同之处了,发现let和我们其他语言(例如C,C++,JAVA等)的块级作用域一样了,而var是链式作用域

再看下面

ES6初探之let和const

ES6初探之let和const

这个就是函数预编译的结果

ES6初探之let和const

ES6初探之let和const

这里用let就提示了错误,这是因为ES6中没有预编译的过程

ES6初探之let和const

ES6初探之let和const

如果想要使用let定义的变量,必须要提前声明

再看下面:

ES6初探之let和const

ES6初探之let和const

ES6初探之let和const

ES6初探之let和const

语法错误,a已经被声明过了

说明let不能重复定义变量

再看下面

ES6初探之let和const

ES6初探之let和const

这里可以这样认为for小括号里面是父级作用域,大括号里面是子级作用域

所以let在用一个作用域里面不能重复定义

const特效和let一样,但是要在定义的时候就要给出初值

const定义的变量如果是原始值,不能更改,如果是对象或者数组等的引用值,就可以通过js提供的一些方法如push进行更改

但是如果你不想使引用值更改,可以使用对象的freeze方法

ES6初探之let和const

ES6初探之let和const