js中的參數傳遞包括值傳遞和引用傳遞
1.值傳遞(數字,字符串等)
例如:
$(function(){ var str="11";
test1(str);
alert(str);//值傳遞測試 結果:11
})
function test1(str){ str="22"}
上述代碼測試可以看出數字,字符串值傳遞:是把值直接複製進入方法內,所以在方法內對參數進行修改是修改的拷貝的值,對方法外無影響
2.引用傳遞
$(function(){ var goods={'count':'1'}; test2(goods); alert(JSON.stringify(goods));//json對象引用傳遞,結果:{'count':'2'} }) function test2(goods){ goods.count='2' }
上述代碼測試可以看出對象傳遞的時候值進行了改變,原理:對象傳遞就是引用傳遞,和值傳遞不同,傳遞到方法內的參數進行復制的是傳遞參數的引用地址,方法內部和方法外部的值是同一個地址,所以在方法內部改變對象的值,外部也改變
$(function(){
var goods={'count':'1'};
test3(goods);
alert(JSON.stringify(goods));//json對象引用傳遞,結果:{'count':'1'}
})
function test3(goods){
goods={'count':4};
}
上述代碼同樣驗證了引用傳遞的原理,這次沒有改變值的原因是:goods={‘count’:4},可以理解爲重新定義了一個json對象,相當於重新new了一個對象,和方法外部的對象是不一樣的地址,所以外面的對象不受影響