1.JS中变量的重新声明和提升

重新声明

1.允许在程序的任何位置使用 var 重新声明 JavaScript 变量:

实例

var x = 10;

// 现在,x 为 10
 
var x = 6;

// 现在,x 为 6

 

2.在相同的作用域,或在相同的块中,通过 let 重新声明一个 var 变量是不允许的:

实例

var x = 10;       // 允许
let x = 6;       // 不允许

{
  var x = 10;   // 允许
  let x = 6;   // 不允许
}

 

3.在相同的作用域,或在相同的块中,通过 let 重新声明一个 let 变量是不允许的:

实例

var x = 10;       // 允许
let x = 6;       // 不允许

{
  var x = 10;   // 允许
  let x = 6;   // 不允许
}

 

4.在相同的作用域,或在相同的块中,通过 let 重新声明一个 let 变量是不允许的:

实例

let x = 10;       // 允许
let x = 6;       // 不允许

{
  let x = 10;   // 允许
  let x = 6;   // 不允许
}

 

5.在相同的作用域,或在相同的块中,通过 var 重新声明一个 let 变量是不允许的:

实例

let x = 10;       // 允许
var x = 6;       // 不允许

{
  let x = 10;   // 允许
  var x = 6;   // 不允许
}

 

6.在不同的作用域或块中,通过 let 重新声明变量是允许的:

实例

let x = 6;       // 允许

{
  let x = 7;   // 允许
}

{
  let x = 8;   // 允许
}

 

提升

通过 var 声明的变量会提升到顶端。如果您不了解什么是提升(Hoisting),请学习我们的提升这一章。

您可以在声明变量之前就使用它:

实例

// 在此处,您可以使用 carName
var carName;

 

通过 let 定义的变量不会被提升到顶端。

在声明 let 变量之前就使用它会导致 ReferenceError。

变量从块的开头一直处于“暂时死区”,直到声明为止:

实例

// 在此处,您不可以使用 carName
let carName;

 

Tags: