Javascript 如何为函数中的任何给定变量更改多个变量?

Javascript 如何为函数中的任何给定变量更改多个变量?,javascript,function,variables,scope,Javascript,Function,Variables,Scope,在下面的代码中,我想为函数中的3个变量指定新值。如果我只有一个变量,我可以简单地返回新值。有没有一种简单的方法可以在一个函数中包含多个变量(而不使用复杂的方法,例如将变量转换为数组并返回数组) 这是我的密码: function increment(x, y, z) { x += 1; y += 2; z += 3; } var a = 1; var b = 1; var c = 1; var d = 20; var e = 12; var f = 8; increm

在下面的代码中,我想为函数中的3个变量指定新值。如果我只有一个变量,我可以简单地返回新值。有没有一种简单的方法可以在一个函数中包含多个变量(而不使用复杂的方法,例如将变量转换为数组并返回数组)

这是我的密码:

function increment(x, y, z) {
    x += 1;
    y += 2;
    z += 3;
}

var a = 1;
var b = 1;
var c = 1;

var d = 20;
var e = 12;
var f = 8;

increment(a, b, c);
console.log(a + ", " + b + ", " + c);

increment(d, e, f);
console.log(d + ", " + e + ", " + f);

// desired output: 
// 2, 3, 4
// 21, 14, 11
// actual output: 
// 1, 1, 1
// 20, 12, 11
可能性1
函数增量(…元素){
返回元素映射(([x,y])=>x+y);
}
设a=1;
设b=1;
设c=1;
设d=20;
设e=12;
设f=8;
[
A.
B
C
]=增量([a,1],[b,2],[c,3]);
log(`${a},${b},${c}');
[
D
E
F
]=增量([d,10],[e,2],[f,5]);

log(`${d},${e},${f}')您可以使用对象格式返回变量

function increment(x, y, z) {
    return {
        x: x + 1,
        y: y + 2,
        z: z+ 3
    }
}

var incremented = increment(a, b, c);
console.log(incremented.x + ", " + incremented.y + ", " + incremented.z);
我希望这会有所帮助。

如果ES6没有兼容性问题,您可以使用它

console.clear()
设a=1;
设b=1;
设c=1;
//分解函数的数组参数
//到三个变量x、y和z
函数增量([x,y,z]){
返回[
x+1,
y+2,
z+3
];
};
console.log('Before',a,b,c);
//解构返回的函数`increment'数组`
//到三个变量a、b和c
//前面没有let或var,因为已经声明了a、b和c
[a,b,c]=增量([a,b,c]);
console.log('After',a,b,c)
我想给函数中的3个变量赋值

如果始终是相同的变量,则将
increment
函数置于变量范围内并关闭它们:

var x = 1, y = 1, z = 1;
function increment() {
    x += 1;
    y += 2;
    z += 3;
}
console.log(x, y, z);
increment();
console.log(x, y, z);
increment();
console.log(x, y, z);
如果有不同的变量集,甚至在不同的范围内,您希望使用公共函数递增,那么实际上不需要3个变量。您需要一个对象,可以传递和变异:

function increment(obj) {
    obj.x += 1;
    obj.y += 2;
    obj.z += 3;
}

var one = {x: 1, y: 1, z: 1};
console.log(one.x, one.y, one.z);
increment(one);
console.log(one.x, one.y, one.z);

var two= {x: 20, y: 12, z: 8};
console.log(two.x, two.y, two.z);
increment(two);
console.log(two.x, two.y, two.z);
最后是建立生成器函数的原因

签名

函数*inc(数组,计数=0;最大inc=3)

参数

数组[数字数组]…..:任意数量的数字

计数[Number][Default:0]..:确定初始增量值

maxInc[Number][Default:3]:确定最大增量值

说明

*inc()传递一个数字数组,其中数组中的每个数字都以递增的数字递增(例如
+=1
+=2
+=3
,等等)。count参数确定第一个增量的值,然后确定其余增量的值。最后一个参数确定计数器重置回0之前的最大值

返回

递增数字的数组


演示
function*inc(数组,cnt=0,max=3){
for(设i=0;i最大值){
cnt=0;
}
cnt=i+1;
设b=数组[i];
b+=碳纳米管;
产量b;
}
}
常量数组=[1,1,1,20,12,8];
for(让inc的个数(数组)){
console.log(num);

}
这只向变量中添加了一个变量,但在问题中,他试图向每个参数添加不同的值JavaScript版本有任何限制吗?ES6、ES5等?您可能会发现这很有用: