模仿通过引用而不是值将数字传递给函数的任何方法
Any way to imitate passing a number by reference, and not value, to a function?
我知道这不是传递原始值的方式,但是最好的方法是什么?有侦听器设置为监视对象o
,所以我需要 n 和 m 在对象o
上始终同步,但我还需要递增的 number 属性是可变的,以便我可以根据某些因素传递不同的属性addOneTo
。
var o = {a: [], b: [], n: 5, m: 6};
function push5To(arr){
arr.push(5);
}
push5To(o.a);
o.a[0]; // 5
function addOneTo(num){
num += 1;
}
addOneTo(o.n);
o.n; // 5 :(
这是因为javascript数组是通过引用传递的。 o.a
是一个数组。 o.n
不是,而是一个简单的数字。
一种方法是让函数返回一个值,并将该值分配给o.n
。或:
function addOneTo(map,key){
map[key] += 1;
}
addOneTo(o,'n');
此外,当@Phrogz说"盒子"时,他的意思是,把它包裹在一个物体里。对象通过引用传递。喜欢:
var o = {a: [], b: [], n: {"value":5}, m: 6};
function addOneTo(key){
key.value += 1;
}
编辑:在大多数语言中,没有"通过引用传递"。只有"按值传递"。所以在某种程度上,我上面所说的(javascript 数组是通过引用传递的)是错误的。不同的是按值传递的确切内容。对于基元,传递的值是基元的实际值。对于非基元(数组、对象),值是对象的引用。
相关文章:
- 函数将输出nan而不是数字,为什么
- 通过jQuery函数将拉丁数字更改为波斯数字并添加逗号
- Javascript函数用于检查数字并返回
- PHP函数识别3个数字中最低的一个并更改其类
- 如何创建一个确定2个数字之间值的函数
- 增加一个数字并将其附加到函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- 在javascript中对数字调用构造函数
- 为什么模块化幂函数在 Python 和 Javascript 中对于大数字的工作方式不同
- 类型错误:数字不是一个函数
- 如何将以下函数更改为字母数字输出
- 给定一个带有数字的数组,我如何编写一个递归函数,当 2 个元素加起来为一个目标时,它会在数组中查找索引
- 雄辩的Javascript:无法理解在sum函数中如何确定数字值
- 为什么可以't JavaScript构造函数创建字符串或数字
- 在 JavaScript 中,括号中的数字/函数以逗号分隔
- “数字”函数在 JavaScript 中做什么
- 我的数字函数的javascript验证无法正常工作
- 将八进制值传递给新数字函数
- 为什么 JavaScript 数字函数返回此数字的错误值
- 限制数字函数但允许字母数字值的 JavaScript 函数