​

let和const

ES6新增了​​let​​关键字,它和​​var​​关键字的区别如下:

  1. let声明的变量只在其代码块内有效;
  2. var声明的变量,在全局范围内有效;
  3. var声明的变量可以在声明前使用,而let不允许;
  4. var运行重复声明变量,而let不允许重复声明变量。

1、在代码块中使用let关键字声明一个变量a,测试在代码块外部调用变量a,会出现​​a is not defined​​异常。



{ let a = 0; console.log(a); } console.log(a);


let关键字和var关键字_外部调用

2、在代码块中使用var关键字声明一个变量a,测试在代码块外部调用变量a,它是全局范围内有效的,所以不会出现异常。



{ var a = 0; } console.log(a);


let关键字和var关键字_代码块_02

3、“变量提升”现象就是在调用变量的”之前“出现的undefined异常,在调用变量的”之后“出现referenceError异常。var关键字会发生此现象,而let不允许以这种先使用变量,后声明变量的方式。



console.log(a); var a = 2; console.log(b); let b = 1;


let关键字和var关键字_外部调用_03

4、let关键字不允许在相同的作用域内重复声明相同的变量



{ var a = 0; let a = 1; console.log(a); } // 或是这种情况 { let a = 0; let a = 1; console.log(a); }


let关键字和var关键字_javascript_04

使用var关键字重复声明变量是允许的,最后一次重复声明的变量的值会覆盖之前的值。



{ var a = 0; var a = 1; console.log(a); }


 

 

 


 

let和const

ES6新增了​​let​​关键字,它和​​var​​关键字的区别如下:

  1. let声明的变量只在其代码块内有效;
  2. var声明的变量,在全局范围内有效;
  3. var声明的变量可以在声明前使用,而let不允许;
  4. var运行重复声明变量,而let不允许重复声明变量。

1、在代码块中使用let关键字声明一个变量a,测试在代码块外部调用变量a,会出现​​a is not defined​​异常。



{ let a = 0; console.log(a); } console.log(a);


let关键字和var关键字_外部调用

2、在代码块中使用var关键字声明一个变量a,测试在代码块外部调用变量a,它是全局范围内有效的,所以不会出现异常。



{ var a = 0; } console.log(a);


let关键字和var关键字_代码块_02

3、“变量提升”现象就是在调用变量的”之前“出现的undefined异常,在调用变量的”之后“出现referenceError异常。var关键字会发生此现象,而let不允许以这种先使用变量,后声明变量的方式。



console.log(a); var a = 2; console.log(b); let b = 1;


let关键字和var关键字_外部调用_03

4、let关键字不允许在相同的作用域内重复声明相同的变量



{ var a = 0; let a = 1; console.log(a); } // 或是这种情况 { let a = 0; let a = 1; console.log(a); }


let关键字和var关键字_javascript_04

使用var关键字重复声明变量是允许的,最后一次重复声明的变量的值会覆盖之前的值。



{ var a = 0; var a = 1; console.log(a); }