名称绑定在函数作用域和全局作用域下有何区别?
时间: 2024-10-01 21:10:44 浏览: 32
聊聊new Function这个陌生面孔及函数作用域和函数执行顺序
名称绑定在函数作用域和全局作用域下的主要区别在于变量的可见性和生命周期:
1. **全局作用域**:在函数外部定义的变量有全局作用域,这意味着它们在整个程序范围内都可以被访问。一旦在某个地方声明了这个变量,无论在哪个函数内部,只要不在同名覆盖的情况下,都能使用相同的名称。全局变量在函数退出后仍然存在,除非被显式地删除或修改。
2. **局部作用域(包括函数作用域)**:在函数内部定义的变量只在该函数内部有效,这就是函数作用域。当你在函数内创建一个新的变量,它的名字不会影响到函数外部的其他同名变量。每个函数都有自己的独立命名空间,因此在函数结束后,这些变量会被销毁,除非它们被返回或存储在函数外部的对象中。
举个例子,在JavaScript中:
```javascript
let globalVar = "Hello"; // 全局变量
function myFunction() {
let localVar = "World"; // 函数内的局部变量
}
// 函数外部可以访问 globalVar
console.log(globalVar); // 输出: Hello
// 在函数内部,localVar 仅限于 myFunction 内部
myFunction();
console.log(localVar); // 抛出错误,因为局部变量在函数之外不可见
```
阅读全文