在每个函数调用中更改函数参数

Changing function argument on each function call

想要将一个参数传递到我的函数中(一个数字 - 零),每次调用我的函数时我都想将这个参数增加一个(这样它就是 arg = 0 然后 arg = 1 然后 arg = 2 等等)。

但是,当然,每次我在我的函数中局部增加它时,它都会在全局重置回零。

想不出任何(简单的)解决方案,这是我的简化代码...

var arg = 0
function test(arg) {
    arg += 1;
    console.log(arg)
}

test(arg);
test(arg);

你可以获取一个对象,因为这是通过引用 hadec 并增加它的 属性。原始值,如数字值,按值传递。

function test(arg) {
    ++arg.value;
    console.log(arg.value);
}

var arg = { value: 0 };

test(arg);
test(arg);

没有清理变量名称以提高可读性,这应该根据您在问题中的内容起作用。

var arg = 0;

function test(arg) {
   arg += 1;
   console.log(arg);
   return arg
}

arg = test(arg);
arg = test(arg);

正如其他评论者所说,JS 是按值调用的,因此您不会编辑该局部变量。还有其他几个选项,比如下面的

var arg = 0;
function test() {
  arg = arg + 1;
  return arg;
}
console.log(test())); // Would output 1
console.log(arg); // Would also output 1

因为发电机很时髦,这里有一个发电机版本:

function* increaseByOne(i) {
    while (true) {
        i++;
        yield i;
    }
}

var gen = increaseByOne(0);

console.log(gen.next().value); //1

console.log(gen.next().value); //2

console.log(gen.next().value); //3

console.log(gen.next().value); //4