【发布时间】:2014-12-02 02:46:12
【问题描述】:
我有一个测试用例如下:
$(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
当我将数组按值传递给函数时,在函数中我更改了值,更改也反映在原始数组中,但在其他情况下,没有任何更改。
为什么按值传递就像是通过引用传递数组一样?
【问题讨论】:
-
JavaScript 只有值传递。在对象的情况下,值实际上是对象的reference。 Pass-by-reference 有所不同:en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference
标签: javascript jquery pass-by-reference pass-by-value