在每个函数调用中更改函数参数
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
想要将一个参数传递到我的函数中(一个数字 - 零),每次调用我的函数时我都想将这个参数增加一个(这样它就是 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