0
var x = 0;
var f = function(arg1, arg2) {
    arg1 += 5;
    arg2 += 7;
//    return ?;
};
fill(255, 0, 0);
text(f(x, x), 200, 200);

如您所见,我只能返回一个变量,但考虑到我正在使用多个变量,我不想使用 return。问题是:我想要一个通用且独立的函数,所以我真的不想在函数范围之外声明全局变量(在本例中为 arg1 和 arg2)。

有什么方法可以将值传递给函数并在不返回且不声明全局变量的情况下进行更改?

我非常感谢你。

4

1 回答 1

0

只需传入包装在数组或对象中的值,然后在那里修改它们。

function modify(arrInput, objInput) {
  arrInput[0] += 10;
  objInput.x += 10;
};

var myArray = [1,2,3];
var myObject = { x: 0, y: 2, z: 4};
modify(myArray, myObject);

结果是现在

myArray -> [11, 2, 3];
myObject -> { x: 10, y: 2, z: 4};

当然,这是否有意义取决于您要实现的目标,并且由于您没有说明代码的目的,因此这几乎是学术性的。你可以这样做,但通常这是一件很奇怪的事情,除非你的函数充当工厂生产线,接收一些对象,并附加功能或修改属性,就好像你的对象在工厂的装配线上运行一样。

于 2013-09-19T22:49:38.923 回答