作用域

js 收藏
0 35
在2015之前,只有全局作用域和函数作用域

全局作用域:全局(在函数之外)声明的变量拥有全局作用域。

var carName = "porsche";

// 此处的代码可以使用 carName

function myFunction() {
  // 此处的代码也可以使用 carName
}
全局变量可以在 JavaScript 程序中的任何位置访问。

函数作用域:局部(函数内)声明的变量拥有函数作用域。

// 此处的代码不可以使用 carName

function myFunction() {
  var carName = "porsche";
  // code here CAN use carName
}

// 此处的代码不可以使用 carName

局部变量只能在它们被声明的函数内访问。

ES2015 引入了两个重要的 JavaScript 新关键词:let 和 const。

这两个关键字在 JavaScript 中提供了块作用域(Block Scope)变量(和常量)。

JavaScript 块作用域

通过 var 关键词声明的变量没有块作用域。

在块 {} 内声明的变量可以从块之外进行访问。

{ 
  var x = 10; 
}
// 此处可以使用 x

可以使用 let 关键词声明拥有块作用域的变量。

在块 {} 内声明的变量无法从块外访问:

{ 
  let x = 10;
}
// 此处不可以使用 x

使用 var 关键字重新声明变量会带来问题。

在块中重新声明变量也将重新声明块外的变量:

var x = 10;
// 此处 x 为 10
{ 
  var x = 6;
  // 此处 x 为 6
}
// 此处 x 为 6

使用 let 关键字重新声明变量可以解决这个问题。

在块中重新声明变量不会重新声明块外的变量:

var x = 10;
// 此处 x 为 10
{ 
  let x = 6;
  // 此处 x 为 6
}
// 此处 x 为 10


上一主题: const注意点
下一主题: js 变量命令法
    暂时没有人评论