var 声明的全局变量闭包函数(Closures)
时间: 2024-09-12 08:13:55 浏览: 46
跟我学习javascript的全局变量
在JavaScript中,`var`声明的全局变量通常不会自动成为闭包,因为它们的作用域是全局的。然而,当一个函数内部引用了外部作用域(即`var`声明的变量)时,就形成了闭包。闭包允许函数访问并操作其外部环境中的变量,即使这个函数在其外部环境中已经执行完毕。
闭包的关键在于返回一个包含对外部变量引用的新函数,这个新函数可以作为值被返回、存储在一个变量里,甚至作为回调。每当这个内部函数被调用时,它都会“记住”那个外部变量的状态。这是JavaScript中一种非常强大的特性,常用于数据封装和模块化设计。
例如:
```javascript
function outerFunction() {
var globalVar = 'I am a global variable';
function innerFunction() {
console.log(globalVar);
}
return innerFunction;
}
var closureExample = outerFunction();
closureExample(); // 输出 "I am a global variable"
```
在这个例子中,`innerFunction`就是闭包,它保留了对`globalVar`的引用,即使`outerFunction`已经执行完毕。
阅读全文