gpt4 book ai didi

javascript - 在函数中初始化、添加、保存局部变量,并使用函数访问该变量

转载 作者:行者123 更新时间:2023-11-30 14:31:35 25 4
gpt4 key购买 nike

var jFunc = function() {

var q;
var p = 0;

q = (typeof(q) === "undefined") ? 0 : q;

p += 1;
q += p;

console.log(q);

};

在chrome开发者工具的控制台中,console.log(q)的输出是q + 1 (1, 2, 3, 4,等等..) 在 jFunc 中独立于调用 jFunc 运行整个代码块的每次后续迭代。然而,当调用jFunc时(为了方便避免在控制台复制和粘贴代码块),每次输出总是1。为什么会这样?

目标是在不使用全局变量的情况下,将一个数值保存到一个变量中,对其加 1,然后将其返回。

最佳答案

您需要的是一个函数,它有自己的持久作用域来跟踪计数器。您可以在定义 jFunc 时使用 IIFE:

const jFunc = (() => {
let p = 0;
return () => {
p++;
return p;
}
})();
console.log(jFunc());
console.log(jFunc());
console.log(jFunc());

这可以通过返回 ++ 来简化一点,但是如果你不熟悉它会有点困惑:

const jFunc = (() => {
let p = 0;
return () => ++p;
})();
console.log(jFunc());
console.log(jFunc());
console.log(jFunc());

或者,如果您需要创建多个计数器函数,则定义一个高阶函数,它可以在调用时创建一个计数函数:

const makeJFunc = () => {
let p = 0;
return () => {
p++;
return p;
}
};
const jFunc1 = makeJFunc();
const jFunc2 = makeJFunc();
console.log(jFunc1());
console.log(jFunc1());
console.log(jFunc2());
console.log(jFunc1());

关于javascript - 在函数中初始化、添加、保存局部变量,并使用函数访问该变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51093578/

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