var 和 let 的区别

 

1)局部作用域

```js // 函数作用域 function foo(){ var a = "a"; let b = "b"; } console.log( a ); // 报错 console.log( b ); // 报错

// 块级作用域 if(true){ var c = "c"; let d = "d"; } console.log( c ); // "c" console.log( d ); // 报错 ```

结论:

var声明的变量,局部作用域只能通过函数产生。let声明的变量,局部作用域由大括号产生。

2)变量重复声明

```js var a = 1; var a = 2; console.log( a ); // 2

let b = 1; let b = 2; console.log( b ); // 报错 ```

结论:

在同一个作用域中,var可以声明重名的变量,后面的会覆盖前面。let不允许声明重名的变量,程序会报错。

3)变量提升

js console.log( a ); // undefined console.log( b ); // 报错 var a = 1; let b = 2;

结论:

var声明的变量会发生变量提升,而let不会。

猜你喜欢

转载自www.cnblogs.com/James23/p/9064056.html