gpt4 book ai didi

javascript 闭包和局部变量 'remembering'

转载 作者:行者123 更新时间:2023-11-30 20:05:13 26 4
gpt4 key购买 nike

问题是关于 JS 闭包的。我有红色的定义和例子,我相信我相当了解这个机制。所以,问题是关于我不明白的具体事情。请考虑以下两个代码。代码一:

function a(){
let x = 5;
return function b(y){
x=x+y;
return x;
};
}

let c = a();
let d = c(3);
let e = c(4);
console.log(d); // logs 8
console.log(e); // logs 12

代码 2:

function a(){
let x = 5;
return function b(y){
x=x+y;
return x;
};
}

let d = a()(3);
let e = a()(4);
console.log(d); //logs 8
console.log(e); //logs 9

问题:在代码 1 中,x 更改了它的值,新值保存在闭包中。在代码 2 中,x 更改了它的值并且新值没有被保存。这是为什么?

最佳答案

这是因为在第二个示例中,您第二次调用了 a,而在第一个示例中,a 仅被调用了一次。每次调用 a 时,x 的值都会初始化为 5。它是返回的内部函数,它创建了闭包,而 x 的值 在该函数的调用之间被记住。但是每次你从 a 返回一个新函数时,它最初都可以访问一个 x,它的值是 5。

关于javascript 闭包和局部变量 'remembering',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53006883/

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