在ES6中新增了let和const关键字,在ES6之前声明变量通常使用var,但var关键字存在变量的提升、能够重复声明一样的变量,以及只有全局全局作用域和局部作用域这给开发带来不少的问题。
在ES6中新增的let和const关键字来声明变量,用let和const有什么好处呢?首先在ES6添加let和const后,引入了块级作用域这个概念,let和const都是块级作用域,这样就解决了变量在if、while、for语句中使用var来声明变量泄露到全局作用域的痛点。
let关键字解决了变量提升的问题,使用let不管是在函数还是在if、while、forf代码块中都不会有变量的提升,同时let不能重复声明,这样就解决了多次声明同一变量将原来已经声明的变量值改变以及声明相同的变量造成引用出错。
const关键字解决了变量提升的问题,使用const不管是在函数还是在if、while、forf代码块中都不会有变量的提升,const声明的是常量,此常量是不能修改的,即写定了就不能动了,但const声明的数组、对象里的元素是可以修改的,我们可以理解为const定义的时候存储了一个地址,我们知道改变数组、对象的元素指针是不变的,及地址值不变,但如果我们直接用别的对象和数组对原来的数组进行替换,那么指针就改变了,这样就不允许了。
总之,let和const带来的好处如下:引入块级作用域只能够作用于当前的块作用域,不会污染全局变量。第二就是不能重复声明一样的变量,这样就避免不同变量重名带来的bug。
在ES6中新增的let和const关键字来声明变量,用let和const有什么好处呢?首先在ES6添加let和const后,引入了块级作用域这个概念,let和const都是块级作用域,这样就解决了变量在if、while、for语句中使用var来声明变量泄露到全局作用域的痛点。
let关键字解决了变量提升的问题,使用let不管是在函数还是在if、while、forf代码块中都不会有变量的提升,同时let不能重复声明,这样就解决了多次声明同一变量将原来已经声明的变量值改变以及声明相同的变量造成引用出错。
const关键字解决了变量提升的问题,使用const不管是在函数还是在if、while、forf代码块中都不会有变量的提升,const声明的是常量,此常量是不能修改的,即写定了就不能动了,但const声明的数组、对象里的元素是可以修改的,我们可以理解为const定义的时候存储了一个地址,我们知道改变数组、对象的元素指针是不变的,及地址值不变,但如果我们直接用别的对象和数组对原来的数组进行替换,那么指针就改变了,这样就不允许了。
总之,let和const带来的好处如下:引入块级作用域只能够作用于当前的块作用域,不会污染全局变量。第二就是不能重复声明一样的变量,这样就避免不同变量重名带来的bug。