在 JavaScript 中,变量作用域的概念非常重要。使用闭包时,需要注意变量作用域的范围,以及变量的生命周期。在闭包中定义的变量,是可以访问到外部函数的变量的,但是外部函数不能访问到闭包中的变量。
示例代码如下:
function outerFunction() { var outerVariable = "I am in outer function"; function innerFunction() { var innerVariable = "I am in inner function"; console.log(innerVariable); // 输出:I am in inner function console.log(outerVariable); // 输出:I am in outer function } return innerFunction; }
var fn = outerFunction(); fn(); // 调用内部函数,输出:I am in inner function 和 I am in outer function
在上述示例代码中,闭包 innerFunction 可以访问到其外部函数 outerFunction 中的变量 outerVariable。但是外部函数不能访问到闭包中的变量 innerVariable。这就是闭包的变量作用域。