js 中引數傳遞(值傳遞和引用傳遞)
阿新 • • 發佈:2019-02-16
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了一個物件,和方法外部的物件是不一樣的地址,所以外面的物件不受影響