【问题标题】:Altering "argument variables" without return and global variables在没有返回和全局变量的情况下更改“参数变量”
【发布时间】:2013-09-25 02:59:35
【问题描述】:
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)。

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

非常感谢。

【问题讨论】:

  • 你可以返回一个数组或一个对象。
  • return { result1: arg1+5, result2: arg2+7 };
  • 从技术上讲,您可以使用闭包“通过引用传递参数”,但这并不比全局变量更好。
  • 传递一个对象或数组并在函数中修改。

标签: javascript function scope arguments


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多