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

时间:2018-12-17 18:14:08

标签: javascript scope parameter-passing function-call

想要将一个参数传递给我的函数(一个数字-0),并且每次调用我的函数时,我都希望将此参数增加一个(这样它的值将为arg = 0然后arg = 1然后arg = 2等等。

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

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

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

test(arg);
test(arg);

4 个答案:

答案 0 :(得分:0)

您可以获取一个对象,因为该对象已被引用覆盖,并增加了它的属性。原始值(如数字值)将按值移交。

npx npm-check --update

答案 1 :(得分:0)

无需清理变量名以提高可读性,这应该根据您所遇到的问题而起作用。

var arg = 0;

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

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

答案 2 :(得分:0)

就像其他评论者所说,JS是按值调用的,因此您将无需编辑该局部变量。还有一些其他选项,例如以下

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

答案 3 :(得分:0)

仅仅因为发电机很时髦,所以这是发电机的版本:

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