欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間: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當(dāng)做參數(shù)傳遞給了函數(shù)addTen,也就是相當(dāng)于將變量count的值復(fù)制給了函數(shù)addTen的參數(shù)。這時addTen的參數(shù)num可以看做是函數(shù)內(nèi)部的一個變量。在上段代碼中,就相當(dāng)于兩個基本數(shù)據(jù)類型變量之間的值復(fù)制。而基本數(shù)據(jù)類型都有自己獨(dú)立的內(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",因?yàn)閛bj是引用類型,所以這里屬于是將引用類型person賦值給了obj,也就是說person和obj引用了一個內(nèi)存地址,所以當(dāng)給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。實(shí)例3與實(shí)例2的區(qū)別是在函數(shù)中又加了2行代碼,在給obj對象新加一個屬性name并賦值后 又將obj定義成了一個新的對象(new Object()),定義新對象后又name賦上新的值“BCD”。這個時候如果是按引用傳遞的話,那么最后person對象就會自動修改為指向其name屬性為"BCD"的新對象,但最后顯示的卻是“ABC”,這說明即使在函數(shù)內(nèi)部修改了參數(shù)的值,但原始的引用還保持不變。實(shí)際上,當(dāng)在函數(shù)內(nèi)部obj=new Object()時 這個新的obj就已經(jīng)成為函數(shù)內(nèi)部的局部對象了,這個對象會在函數(shù)執(zhí)行完畢后自動銷毀。

相關(guān)文章

  • 深入理解JavaScript系列(42):設(shè)計模式之原型模式詳解

    深入理解JavaScript系列(42):設(shè)計模式之原型模式詳解

    這篇文章主要介紹了深入理解JavaScript系列(42):設(shè)計模式之原型模式詳解,原型模式(prototype)是指用原型實(shí)例指向創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象,需要的朋友可以參考下
    2015-03-03
  • JavaScript中的運(yùn)算符講解

    JavaScript中的運(yùn)算符講解

    本文詳細(xì)講解了JavaScript中的運(yùn)算符,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解

    深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解

    這篇文章主要介紹了深入理解JavaScript系列(45):代碼復(fù)用模式(避免篇)詳解,本文講解了默認(rèn)模式、借用構(gòu)造函數(shù)、借用構(gòu)造函數(shù)并設(shè)置原型、共享原型、臨時構(gòu)造函數(shù)、klass等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • 詳解javascript中的變量提升和函數(shù)提升

    詳解javascript中的變量提升和函數(shù)提升

    這篇文章主要介紹了詳解javascript中的變量提升和函數(shù)提升的相關(guān)資料,需要的朋友可以參考下
    2018-05-05
  • js中對象深拷貝方法總結(jié)

    js中對象深拷貝方法總結(jié)

    js深拷貝這個問題,在實(shí)際的工作和面試當(dāng)中也是經(jīng)常使用到的。
    還經(jīng)常有一些公司要求,原生手寫實(shí)現(xiàn),這篇文章主要介紹了js中對象深拷貝方法總結(jié),需要的朋友可以參考下
    2022-10-10
  • 取得父標(biāo)簽

    取得父標(biāo)簽

    取得父標(biāo)簽...
    2006-11-11
  • JavaScript中的分號插入機(jī)制詳細(xì)介紹

    JavaScript中的分號插入機(jī)制詳細(xì)介紹

    這篇文章主要介紹了JavaScript中的分號插入機(jī)制詳細(xì)介紹,本文講解JavaScript中各種情況下的分號插入機(jī)制,需要的朋友可以參考下
    2015-02-02
  • javascript事件模型介紹

    javascript事件模型介紹

    在各種瀏覽器中存在三種事件模型:原始事件模型( original event model),DOM2事件模型,IE事件模型.其中原始的事件模型被所有瀏覽器所支持,而DOM2中所定義的事件模型目前被除了IE以外的所有主流瀏覽器支持。
    2016-05-05
  • JavaScript初學(xué)者建議:不要去管瀏覽器兼容

    JavaScript初學(xué)者建議:不要去管瀏覽器兼容

    如果可以回到過去的話,我會告訴自己這句話:初學(xué)JavaScript的時候無視DOM和BOM的兼容性,先了解一些基礎(chǔ)知識最后再考慮兼容性
    2014-02-02
  • 關(guān)于javascript事件響應(yīng)的基礎(chǔ)語法總結(jié)(必看篇)

    關(guān)于javascript事件響應(yīng)的基礎(chǔ)語法總結(jié)(必看篇)

    下面小編就為大家?guī)硪黄P(guān)于javascript事件響應(yīng)的基礎(chǔ)語法總結(jié)(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-12-12

最新評論