1. 程式人生 > >js 中引數傳遞(值傳遞和引用傳遞)

js 中引數傳遞(值傳遞和引用傳遞)

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了一個物件,和方法外部的物件是不一樣的地址,所以外面的物件不受影響