我有一个测试用例如下:
$(document).ready(function() {
var arrayList=[{"name":"pradip"},{"name":"Tengi"}];
var del = function(list) {
list.splice(1,1);
$("div").append("function:" + list.length +"<br>");
};
$("div").append("original:" + arrayList.length+"<br>");
del(arrayList);
$("div").append("modified"+ arrayList.length+"<br>");
var test=1;
var increase=function(a){
a++;
$("div").append("function="+a+"<br>");
}
$("div").append("original test="+test+"<br>");
increase(test);
$("div").append("increased test="+test+"<br>");
});
输出是:
original:2
function:1
modified1
original test=1
function=2
increased test=1
当我按值将数组传递给函数,并且在函数中更改值时,更改也会反射(reflect)在原始数组中,但在其他情况下,没有更改。
为什么按值传递就像按数组的引用传递一样?
最佳答案
您正在按值传递对数组的引用。
您现在拥有对同一数组实例的两个引用。
如果您不希望数组发生更改,则需要显式创建一个副本。
关于javascript - 在 javascript/jquery 中通过引用和值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26239993/