你能举例说明JavaScript的作用域规则吗?
时间: 2024-12-22 13:19:12 浏览: 9
JavaScript 的作用域规则定义了变量在其程序中的可见性和生命周期。主要有两种主要类型的作用域:
1. **全局作用域(Global Scope)**:在函数外部声明的变量具有全局作用域,它们在整个脚本中都是可访问的。例如:
```javascript
var globalVar = "I'm global";
function test() {
console.log(globalVar); // 可以访问全局变量
}
test();
```
2. **局部作用域(Local Scope)**:在函数内部声明的变量只在该函数内部有效。有两种局部作用域:
- **函数作用域(Function Scope)**:如在`function`内声明的变量,如 `let` 或 `const`:
```javascript
function localScopeExample() {
var localVar = "This is local";
console.log(localVar); // 只能在当前函数内访问
}
```
- **块级作用域(Block Scope)**:自ES6引入 `let` 和 `const` 后,变量在大括号 `{}` 内定义时拥有块级作用域,即使在函数内部也是如此:
```javascript
if (true) {
let blockScopedVar = "Visible within this block";
} else {
// 这里无法访问 blockScopedVar
}
```
箭头函数也有自己的作用域规则,它们共享外层函数的上下文,而不是有自己的`this`值。
阅读全文