function outer() {
var x = 10;
function inner() {
console.log(x);
}
return inner;
}
var innerFn = outer();
innerFn();
在上述代码中,outer 函数中定义了一个变量 x 和内部函数 inner。inner 函数引用了外部函数 outer 中的变量 x。当 outer 函数被调用时,它返回内部函数 inner,这个内部函数被赋值给变量 innerFn。当 innerFn 函数被调用时,它可以访问并输出变量 x 的值。
当 outer 函数被调用时,它创建了一个词法环境,其中包含了变量 x 和函数 inner。在执行完 outer 函数后,outer 函数的词法环境被销毁,但是内部函数 inner 仍然可以访问变量 x。这是因为内部函数 inner 与外部函数 outer 的环境形成了闭包,使得内部函数 inner 可以访问外部函数 outer 中的变量和参数。在这个例子中,变量 x 被保存在内存中,直到 innerFn 函数被销毁。