作用域
一句话解释
作用域是变量“能被访问到”的范围。在函数里声明的变量只在该函数内有效,这就是局部作用域。
用大白话说
作用域回答的是“这个变量在哪些地方能被用到”。可以把它理解成变量的“活动范围”——出了这个范围,变量就“不存在”了。
两种基本作用域:
- 全局作用域:在最外层声明的变量,代码任何地方都能访问。
- 局部作用域:在函数或代码块里声明的变量,只在该函数/块内部有效,外面访问不到。
let global = "我在外面"; // 全局变量
function f() {
let local = "我在里面"; // 局部变量
console.log(global); // 能访问
console.log(local); // 能访问
}
console.log(global); // 能访问
console.log(local); // ❌ 报错:local 未定义
作用域的好处是避免命名冲突和节省内存:不同函数里都可以用 i、temp 这种名字,互不干扰;函数执行完,局部变量就被释放。
示例
javascript
let global = "外面";
function f() {
let local = "里面";
console.log(global, local); // 都能访问
}
f();
console.log(global); // 能访问
// console.log(local); // ❌ 报错:local 在函数外不可见global 是全局变量,哪里都能用。local 是函数内声明的局部变量,函数外访问不到,会报错。
工作原理
- 变量在哪个作用域里声明,就只在哪个作用域及其内部可见
- 函数内部能访问外部变量,外部访问不到内部变量
- 函数执行完毕,其局部变量被销毁
- 不同函数里的同名局部变量互不影响
常见混淆
容易混淆的对象: 全局变量
关键区别: 全局变量在程序任何地方都能访问,局部变量只在声明它的函数/块内有效。能用局部变量就别用全局变量,减少耦合和冲突。
相关术语
相关资源
相关课程
- 函数课程
函数会创建新的局部作用域
学习基础知识
通过结构化课程深入理解这个主题。
解读错误信息
用大白话解释常见错误——什么意思、为什么发生、如何修复。