ES6以后,js中推荐使用let与const声明变量,因为var具有以下不足之处
1:声明提升
console.log(num)
var num=123
执行结果为:undefined
即使用var关键字时,执行代码时会先将所有var变量声明一遍,再按照顺序执行代码
上述例子执行过程就是:先将num进行声明,但不会赋值,执行到
console.log(num)
时,此时只有变量名,没有赋值,所以是undefined
2:不具有块级作用域
for(var i=0;i<10;i++){
console.log(i)
}
console.log(i);
从结果发现通过var声明的变量,即使在循环外也可以访问到此变量,因此var声明变量类似于声明全局变量
3.变量覆盖
var num=2
var num=3
console.log(num);
执行结果当然是:3
但是按照正常理解是已经存在的变量,不能再声明,而var就没有考虑到此问题,。
比如在大型项目中,如果你不记得某个变量名是否被使用过,而你再次使用时,系统没有检测出来错误,将会导致之前变量存储的数据被清除,如果此变量存储着重要的且需要展示到页面的数据,将他重新声明后,将会影响到整个页面的数据呈现
let关键字就解决了上诉问题,同时使用const也需要注意以下几点: