var、let和const的区别

tech2024-10-17  13

1.变量提升

var存在变量提升,可以在声明之前使用,值为undefined。 而let和const在声明之前使用会报错。

console.log(a) //undefined var a = 1 ; console.log(b) //ReferenceError: g is not defined let b = 2; console.log(c) //ReferenceError: g is not defined const c = 2;

2.重复声明

在相同作用域内,let和const不允许重复声明,var 允许重复声明。

var a = 1; var a = 2; console.log(a) //2 let b = 3; let b = 4; console.log(b) //SyntaxError: Identifier 'g' has already been declared const c = 5; const c = 6; console.log(c); //SyntaxError: Identifier 'g' has already been declared

3.暂时性死区

let和const存在暂时性死区,var不存在

var tmp = 123; if(true){ tmp = "abc"; // ReferenceError let tmp; //报错 } //以上代码if后面{}形成了块级作用域,由于使用let声明了tmp,则这个变量就绑定了块区域,在声明之前使用,会报错。

4.块级作用域

ES6中新增了块级作用域。块级作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。 1.解决内层变量可能覆盖外层变量的问题 2.不存在变量提升,变量存在于块级作用域之中。

var不存在块级作用域。let和const存在块级作用域。

4.是否能修改声明的变量

var和let可以。const声明的是一个常量,不可以改变,一旦声明就必须给赋值。const所说的一旦声明值就不能改变,实际上指的是:变量指向的那个内存地址所保存的数据不得改动。

最新回复(0)