当前位置: 首页 > 知识库问答 >
问题:

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

彭朝
2023-03-14

在下面的代码中,我想给一个函数中的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

共有3个答案

甄煜
2023-03-14

我想给函数中的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);
裴理
2023-03-14

可以使用对象格式返回变量

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);

我希望这有帮助。

谢高峯
2023-03-14
function increment(...elem) {
  return elem.map(([x, y]) => x + y);
}

let a = 1;
let b = 1;
let c = 1;

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

[
  a,
  b,
  c
] = increment([a, 1], [b, 2], [c, 3]);

console.log(`${a}, ${b}, ${c}`);

[
  d,
  e,
  f
] = increment([d, 10], [e, 2], [f, 5]);

console.log(`${d}, ${e}, ${f}`);
 类似资料:
  • 我有这个变量: 通过单击按钮,我执行此功能: 变量不会改变,我的输出是: 但是如果我第二次按下按钮,我会得到输出: 为什么值第一次不改变?

  • 问题内容: 我正在尝试从已定义的变量中增加或减少,但是我不知道如何用新的变量覆盖旧的值。 错误信息: 问题答案: 尝试运行代码时遇到的错误是: …从表面上看,这似乎很奇怪:毕竟,()代码中的第一个语句是一个赋值。发生什么了? 实际上,发生了两种截然不同的事情,除非你已经知道它们,否则它们都不是显而易见的。 首先,你实际上有两个不同的变量: 在a你的第一行是一个全局变量(所谓的,因为它存在于全球范围

  • 问题内容: 第一个System.out打印 2 并且应该打印,而第二个System打印 65 。我已经用这种语言编程了一年多了,据我所知这是不可能发生的!有什么帮助吗? 上面的代码在两行上都显示 9 。 问题答案: 当你这样做,之前仅仅是一个参考阵列, NO 新阵列已创建并分配给。因此,当您查看自己的价值时,基本上就是查看的价值,反之亦然。只是的别名。这就是为什么在第二张照片中您得到65。 检查该

  • 请帮助我订阅更改的变量。我做了简单的微调。服务中的微调状态(真|假)存储: 在组件模板中,我通过条件显示微调器: 在组件中,我尝试订阅服务isVisibleSpinner变量中的更改: 但控制台输出遵循错误消息: 类型“boolean”不可分配给类型“Observable”。

  • 问题内容: 我有一个简单的删除按钮,该按钮可以接受字符串或数字,但不接受ng-model变量(不确定这是否是正确的术语)。 会产生: 但是,单击时什么也没有发生。如果我对变量进行硬编码,那么它就可以正常工作。我以为我不是在以“角度”方式做事,但是我不确定那是什么方式:) 这是我的控制器代码: 问题答案: 您无需在中使用大括号(),请尝试以下操作:

  • 问题内容: 是否可以获取传递给函数的变量的原始变量名?例如 以便: 返回值: 编辑: 我想要做的就是使一个函数像: ..并让函数根据传递给它的变量的名称生成文件名。 我想如果不可能的话,我只需要每次将变量和变量名作为字符串传递。 问题答案: 你不能 在传递给函数之前先对其进行评估。您所能做的就是将它作为字符串传递。