gpt4 book ai didi

javascript - 闭包 - 编译与解释阶段 javascript

转载 作者:行者123 更新时间:2023-11-29 19:06:19 24 4
gpt4 key购买 nike

//代码开始

var a = 10;
function outer() {
function inner() {
console.log(a);
console.log(b);
};
var b = 20;
return inner;
}
var innerFn = outer();
innerFn();

//代码结束

我的问题是:

在闭包中,函数会记住函数对象创建时的作用域信息(在上面的例子中,在编译阶段),但那时(a 和 b)的赋值还没有真正发生。那么,变量a和b的值是如何保留的。

以上说法如有错误请指正

最佳答案

正如您在第一句话中所说,闭包会记住作用域信息。这包括对已经声明(或与函数同时声明)的变量的引用。这些变量的值是什么并不重要 - 它们是在调用闭包时实际使用变量时计算的。

您会注意到,当您在 outer() 调用中创建闭包后覆盖 a 时,它将为您提供 a 当调用 innerFn() 时。闭包不会记住它们创建时的

关于javascript - 闭包 - 编译与解释阶段 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42542031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com