gpt4 book ai didi

Javascript 闭包和 IIFE(立即调用的函数表达式)

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:12 27 4
gpt4 key购买 nike

闭包通过引用(而不是值)存储它们的外部变量。但是,在下面的代码中,我想按值存储。谁能告诉我如何使用 IIFE 做到这一点?

var i = -1;
var f = function () {
return i; // I want to capture i = -1 here!
};
i = 1;
f(); // => 1, but I want -1

最佳答案

您发布的内容实际上不是 IIFE:它代表立即调用的函数表达式;你有一个函数,但你没有立即调用它!

除此之外,这里的想法是将有趣的状态位存储在函数参数中,以便它成为一个独特的引用。为此,您可以创建另一个函数(函数表达式部分),然后使用要捕获其状态的全局变量调用它(立即调用部分)。这是它的样子:

var i = -1;
var f = (function(state) { // this will hold a snapshot of i
return function() {
return state; // this returns what was in the snapshot
};
})(i); // here we invoke the outermost function, passing it i (which is -1).
// it returns the inner function, with state as -1
i = 1; // has no impact on the state variable
f(); // now we invoke the inner function, and it looks up state, not i

关于Javascript 闭包和 IIFE(立即调用的函数表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20918030/

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