一文读懂ES6 中 var、let、const 的区别

一、提出的时间早晚

 var提出的时间较早,是ES5就出现的,而let和const则稍微晚点,是ES6出现的。

二、是否可以变量提升

var 可以变量提升,如:

console.log(a) //undefined
var a = 1;

a已经声明,但还没被赋值,默认得到的是 undefined 。
而 let、const 的结果如下:

console.log(b) // Uncaught ReferenceError: b is not defined
let b = 2;

console.log(c) // Uncaught ReferenceError: b is not defined
const c = 3;

凡是在 let,const 声明之前使用该变量都会报错,找不到变量 。

三、是否允许重复定义变量

列出有关这三个有关重复定义的代码之后,大家就一目了然。

var f = 1 ;
var f = 2 ;
console.log(f) // 2
let f = 1 ; 
let f = 2 ;
console.log(f) // Identifier 'f' has already been declared
const f = 1 ;
const f = 2;
console.log(f) // Identifier 'f' has already been declared

从上面的代码可以看出,var 是可以重复定义变量的;而 let 和 const则不支持,如果重复定义的话,则会报错。

四、const一旦声明变量,则此变量就不能修改

const f = 1;
f = 2;  //  Assignment to constant variable. at <anonymous>:1:4

var f = 1;
f = 2 // 2

let f = 1;
f = 2 // 2 

const 只要声明之后,就不能修改。

五、全局作用域和函数作用域

var 可作用于全局,
而 let 和 const 只能作用于函数内部 。

猜你喜欢

转载自blog.csdn.net/qq_40137978/article/details/106150412