Skip to content

作用域

一句话解释

作用域是变量“能被访问到”的范围。在函数里声明的变量只在该函数内有效,这就是局部作用域。

用大白话说

作用域回答的是“这个变量在哪些地方能被用到”。可以把它理解成变量的“活动范围”——出了这个范围,变量就“不存在”了。

两种基本作用域:

  • 全局作用域:在最外层声明的变量,代码任何地方都能访问。
  • 局部作用域:在函数或代码块里声明的变量,只在该函数/块内部有效,外面访问不到。
let global = "我在外面";      // 全局变量
function f() {
  let local = "我在里面";  // 局部变量
  console.log(global);     // 能访问
  console.log(local);      // 能访问
}
console.log(global);        // 能访问
console.log(local);         // ❌ 报错:local 未定义

作用域的好处是避免命名冲突节省内存:不同函数里都可以用 itemp 这种名字,互不干扰;函数执行完,局部变量就被释放。

示例

javascript
let global = "外面";
function f() {
  let local = "里面";
  console.log(global, local); // 都能访问
}
f();
console.log(global); // 能访问
// console.log(local); // ❌ 报错:local 在函数外不可见

global 是全局变量,哪里都能用。local 是函数内声明的局部变量,函数外访问不到,会报错。

工作原理

  1. 变量在哪个作用域里声明,就只在哪个作用域及其内部可见
  2. 函数内部能访问外部变量,外部访问不到内部变量
  3. 函数执行完毕,其局部变量被销毁
  4. 不同函数里的同名局部变量互不影响

常见混淆

  • 容易混淆的对象: 全局变量

    关键区别: 全局变量在程序任何地方都能访问,局部变量只在声明它的函数/块内有效。能用局部变量就别用全局变量,减少耦合和冲突。

相关术语

相关资源

相关课程

学习基础知识

通过结构化课程深入理解这个主题。

查看课程

解读错误信息

用大白话解释常见错误——什么意思、为什么发生、如何修复。

查看错误

← 返回术语表