作用域与作用域链深度解析 - 详解

一、作用域(Scope)

1、基本定义
作用域是程序中变量和函数的可访问范围,它规定了在何处以及如何查找变量。JavaScript采用词法作用域(Lexical Scope),即作用域在代码编写阶段就已确定(而非运行时)。

2、作用域的类型
2-1 全局作用域(Global Scope)

  • 最外层作用域
  • 在浏览器中是window对象
  • 在Node.js中是global对象
  • 生命周期:页面关闭时销毁
var globalVar = "I'm global";
// 全局变量
function globalFunc() {

console.log("Global function");
}
// 浏览器环境中
console.log(window.globalVar);
// "I'm global"
window.globalFunc();
// "Global function"

2-2 函数作用域(Function Scope)

  • 函数内部的作用域
  • 使用var声明的变量具有函数作用域
  • 生命周期:函数执行完毕时销毁
function myFunction() {

var functionScoped = "I'm function scoped";
if (true) {

var stillAccessible = "Still accessible";
}
console.log(stillAccessible);
// "Still accessible" 
}
myFunction();
console.log(functionScoped);
// ReferenceError: functionScoped is not defined

2-3 块级作用域(Block Scope)(ES6+)

  • {} 包围的代码块形成的作用域
  • 使用letconst声明的变量具有块级作用域
  • 生命周期:块执行完毕时销毁
{

let blockScoped = "I'm block scoped";
const alsoBlockScoped = "Me too!";
}
console.log(blockScoped);
// ReferenceError
console.log(alsoBlockScoped);
// ReferenceError
if (true) {

let conditionVar = "Inside if block";
console.log(conditionVar);
// "Inside if block"
}
console.log(conditionVar);
// ReferenceError
for (let i = 0; i &l
posted @ 2025-08-16 10:21  wzzkaifa  阅读(9)  评论(0)    收藏  举报