Javascript 如何确保变量不是通过引用传递的
我有一段代码:Javascript 如何确保变量不是通过引用传递的,javascript,scope,pass-by-reference,Javascript,Scope,Pass By Reference,我有一段代码: var A = [1,2,3]; function calculatePartialSum(A, i) { A.splice(0,i); console.log('calculating sum for ', A); return A.reduce(add, 0); } var add = function(a, b) { return a + b; } var test = function(A) { var sums = []; for ( var i=0;
var A = [1,2,3];
function calculatePartialSum(A, i) {
A.splice(0,i);
console.log('calculating sum for ', A);
return A.reduce(add, 0);
}
var add = function(a, b) {
return a + b;
}
var test = function(A) {
var sums = [];
for ( var i=0; i < A.length ; i++ ) {
console.log('calling calculate sum for i = ', i, A);
sums.push(calculatePartialSum(A, i));
}
return sums;
}
console.log( test(A));
var A=[1,2,3];
函数计算部分(A,i){
A.拼接(0,i);
console.log('A'的计算总和);
返回A.reduce(添加,0);
}
var add=函数(a,b){
返回a+b;
}
var测试=功能(A){
var总和=[];
对于(变量i=0;i
你可以用许多方法复制一个
数组
,看看哪个方法更快
var myArray = [1,2,3];
var myClone = clone( myArray );
function clone ( toClone ) {
a = [];
for ( i = toClone.length; i--; ) {
a.push( toClone[i] );
}
return a;
}
迭代似乎是最快的,但请注意,如果数组中的元素是对象
,则不会复制,而是引用
var myArray = [{},{},{}];
var myClone = clone( myArray );
myClone[0].foo = 'bar';
console.log( myArray[0].foo ); // 'bar'
为什么不简单地复制它呢?1)名称
calculateSum
有误导性:我想这个函数可以计算从0到i
的总和。2) 在这种情况下,为循环编写一个好的,有什么不对???。它始终是“按值传递”,但对于对象,该值是一个参考值。这里有这么多好的答案-我希望它们都是正确的。@gamealchest是的,这是误导。我将其重命名为CalculatePartialSum为什么不简单地复制它呢?1)名称calculateSum
具有误导性:我想,人们会期望此函数计算从0到I
的总和。2) 在这种情况下,为
循环编写一个好的,有什么不对???。它始终是“按值传递”,但对于对象,该值是一个参考值。这里有这么多好的答案-我希望它们都是正确的。@gamealchest是的,这是误导。我将其重命名为CalculatePartialSumarray,使其不通过引用传递。它们是按值传递的,但该值是一个引用。没错,这样更容易理解,但我会编辑它。数组不是按引用传递的。它们是按值传递的,但该值是一个引用。你是对的,它只是eas