最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Js從頭學(xué)起(基本數(shù)據(jù)類型和引用類型的參數(shù)傳遞詳細分析)

 更新時間:2012年02月16日 20:14:04   作者:  
Js中所有函數(shù)的參數(shù)傳遞都是按值傳遞的,也就是把函數(shù)外面的值復(fù)制給函數(shù)內(nèi)部的參數(shù),就和把值從一個變量復(fù)制到另一個變量一樣。下面舉幾個特別的例子
1、基本數(shù)據(jù)類型傳遞參數(shù):
復(fù)制代碼 代碼如下:

  funciton addTen(num){
    num+=10;
    return num;
  }
  var count=20;
  var result=addTen(count);
  alert(count);//20
  alert(resullt);//30

  執(zhí)行結(jié)果是:20和30。在這段代碼中,將變量count當做參數(shù)傳遞給了函數(shù)addTen,也就是相當于將變量count的值復(fù)制給了函數(shù)addTen的參數(shù)。這時addTen的參數(shù)num可以看做是函數(shù)內(nèi)部的一個變量。在上段代碼中,就相當于兩個基本數(shù)據(jù)類型變量之間的值復(fù)制。而基本數(shù)據(jù)類型都有自己獨立的內(nèi)存地址,所以num和count是沒有任何關(guān)系的,他們只是值相等而已,函數(shù)執(zhí)行完畢后,count的值并沒有改變。而函數(shù)外面的result是被直接賦值的,所以result的值就是函數(shù)的結(jié)果30。
  2、引用類型傳遞參數(shù):
復(fù)制代碼 代碼如下:

  function setName(obj){
    obj.name="LSN";
  }
  var person=new Object();
  setName(person);
  alert(person.name);//LSN

  執(zhí)行結(jié)果是:LSN。在這段代碼中,函數(shù)setName的作用是給obj對象添加了一個屬性name并給該屬性賦值為"LSN",因為obj是引用類型,所以這里屬于是將引用類型person賦值給了obj,也就是說person和obj引用了一個內(nèi)存地址,所以當給obj新加了屬性name時,在函數(shù)外面的person也跟著改變,最后person.naem的結(jié)果為LSN。
  3、引用類型傳遞參數(shù)到底傳的是值還是引用?
復(fù)制代碼 代碼如下:

  function setName(obj){
    obj.name="ABC";
    obj=new Object();
    obj.name="BCD";
  }
  var person=new Object();
  setName(person);
  alert(person.name);// ABC

  執(zhí)行結(jié)果是:ABC。實例3與實例2的區(qū)別是在函數(shù)中又加了2行代碼,在給obj對象新加一個屬性name并賦值后 又將obj定義成了一個新的對象(new Object()),定義新對象后又name賦上新的值“BCD”。這個時候如果是按引用傳遞的話,那么最后person對象就會自動修改為指向其name屬性為"BCD"的新對象,但最后顯示的卻是“ABC”,這說明即使在函數(shù)內(nèi)部修改了參數(shù)的值,但原始的引用還保持不變。實際上,當在函數(shù)內(nèi)部obj=new Object()時 這個新的obj就已經(jīng)成為函數(shù)內(nèi)部的局部對象了,這個對象會在函數(shù)執(zhí)行完畢后自動銷毀。

相關(guān)文章

最新評論

泗阳县| 绿春县| 崇左市| 建始县| 华亭县| 内黄县| 安多县| 陕西省| 安顺市| 崇阳县| 淅川县| 库伦旗| 铜梁县| 漯河市| 安阳市| 岚皋县| 铁岭市| 枣强县| 郯城县| 锦屏县| 东丽区| 无锡市| 南雄市| 陆川县| 乌兰察布市| 昆明市| 县级市| 富顺县| 腾冲县| 罗城| 河间市| 舒城县| 元朗区| 盘山县| 淳化县| 湟源县| 临潭县| 宜州市| 登封市| 酉阳| 汉川市|