1.全局的污染
var 会污染全局即在全局作用域中用var声明的变量会挂载到window上,但是要注意的是let,const声明的数据在<script>标签中也是会传递的
2.重复声明问题
var可以重复声明,let,const不能重复声明
3.作用域
var是全局作用域,let,const是块级作用域,只在块级区域内生效
4.变量提升和暂时性死区
这三者都会进行变量提升,但是let和const会形成一个暂时性死区
比如这个代码
console.log(a);
var a=1
浏览器会报undefined
如果是用const或let来声明的话就是报暂时性死区的错了
5.let 和 const
- const声明的变量是不可改变的,let是可以改变的
值得说明的是
const a = {
name:'zs',
age:10
}
a.name = 'lis'//正常更改
a = {}//报错
//出现这种情况是因为复杂数据类型存储在堆里,而更改里面的属性并没有改变整个对象指向的地址
- let可以声明后再赋值,const必须在声明时就赋值