改变“参数变量”而不返回和全局变量

时间:2013-09-19 20:46:43

标签: javascript function scope arguments

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

有没有办法将值传递给函数并在不返回的情况下进行更改而不声明全局变量?

我非常感谢你。

1 个答案:

答案 0 :(得分: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};

当然,这是否有意义取决于你想要达到的目标,而且由于你没有说明你的代码的目的,这几乎是学术性的。你可以这样做,但通常这是一件很奇怪的事情,除非你的函数充当一个带有某个对象的工厂线,并强调功能或修改属性,好像你的对象在装配线上运行一样在工厂里。