JavaScript中var、let、const的区别
- var可以在所有的ECMASCript版本中,let和const只能在大于等于ECMAScript6的版本中;
- var的声明是函数作用域,let和const是块级作用域;
- var声明变量会提升到函数顶端,let和const会因为块级的作用不会变量提升;
- var可以重复声明和覆盖自己的变量,但是不能重复声明和覆盖let和const的变量;let和const不可以重复声明变量;
- var、let声明的时候可以不赋初始值并且可以随时修改,const声明的时候必须初始化,而且不能修改。(引用数据类型不能修改指针,可以修改内容)
- 全局声明的时候,var声明变量挂在在window对象,let、const因为ES6中,全局对象的属性和全局变量脱钩,所以没有在window上在对应的块级作用域的活动对象上。
- let、const相比var,在块级作用域比函数作用域更早终止的情况下有助于垃圾回收提升性能。
下面我们看一段代码来解释一下var
var scope = "80"; //全局变量 function scopeTest() { var scope; //局部变量 console.log(scope); scope = "100" //为函数内的局部变量赋值 } console.log(scope) //1. 80(外层的全局变量) scopeTest(); //2. undefined(函数内的局部变量) 主要考察 console.log(scope) //3. 80(外层的全局变量)
最终打印结果:80 undefined 80
转载标明出处哦 大家一起加油~~~

浙公网安备 33010602011771号