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

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

  • 一、提出的时间早晚
  • 二、是否可以变量提升
  • 三、是否允许重复定义变量
  • 四、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 :1:4

var f = 1;
f = 2 // 2

let f = 1;
f = 2 // 2 

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

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

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

你可能感兴趣的:(一文读懂ES6 中 var、let、const 的区别)