定义变量的方式:
let和const
let相当于之前的var,但是有所不同
const用于定义常量,定义好了就不能改变
这里就可以看到let和var的不同之处了,发现let和我们其他语言(例如C,C++,JAVA等)的块级作用域一样了,而var是链式作用域
再看下面
这个就是函数预编译的结果
这里用let就提示了错误,这是因为ES6中没有预编译的过程
如果想要使用let定义的变量,必须要提前声明
再看下面:
语法错误,a已经被声明过了
说明let不能重复定义变量
再看下面
这里可以这样认为for小括号里面是父级作用域,大括号里面是子级作用域
所以let在用一个作用域里面不能重复定义
const特效和let一样,但是要在定义的时候就要给出初值
const定义的变量如果是原始值,不能更改,如果是对象或者数组等的引用值,就可以通过js提供的一些方法如push进行更改
但是如果你不想使引用值更改,可以使用对象的freeze方法