帶你深入理解傳遞參數(shù)

傳遞參數(shù)

ECMAScript中所有函數(shù)的參數(shù)都是按值傳遞的掖举。也就是說包券,把函數(shù)外部的值復(fù)制給函數(shù)內(nèi)部的參數(shù)濒旦,就和把值從一個(gè)變量復(fù)制到另一個(gè)變量一樣株旷。基本類型值的傳遞如同基本類型變量的復(fù)制一樣尔邓,而引用類型值的傳遞晾剖,則如同引用類型變量的復(fù)制一樣。有不少開發(fā)人員在這一點(diǎn)上可能會(huì)感到困惑梯嗽,因?yàn)樵L問變量有按值和按引用兩種方式齿尽,而參數(shù)只能按值傳遞。

在向參數(shù)傳遞基本類型的值時(shí)灯节,被傳遞的值會(huì)被復(fù)制給一個(gè)局部變量(即命名參數(shù)循头,或者用ECMAScript的概念來說绵估,就是arguments對象中的一個(gè)元素)。在向參數(shù)傳遞引用類型的值時(shí)卡骂,會(huì)把這個(gè)值在內(nèi)存中的地址復(fù)制給一個(gè)局部變量国裳,因此這個(gè)局部變量的變化會(huì)反映在函數(shù)的外部。請看下面這個(gè)例子:

function addTen(num) {

num += 10;

return num;

}

var count = 20;

var result = addTen(count);

alert(count); ? ?//20偿警,沒有變化

alert(result); ?//30

這里的函數(shù)addTen()有一個(gè)參數(shù)num躏救,而參數(shù)實(shí)際上是函數(shù)的局部變量。在調(diào)用這個(gè)函數(shù)時(shí)螟蒸,變量count作為參數(shù)被傳遞給函數(shù),這個(gè)變量的值是20崩掘。于是七嫌,數(shù)值20被復(fù)制給參數(shù)num以便在addTen()中使用。在函數(shù)內(nèi)部苞慢,參數(shù)num的值被加上了10诵原,但這一變化不會(huì)影響函數(shù)外部的count變量。參數(shù)num與變量count互不相識挽放,它們僅僅是具有相同的值绍赛。假如num是按引用傳遞的話,那么變量count的值也將變成30辑畦,從而反映函數(shù)內(nèi)部的修改吗蚌。當(dāng)然,使用數(shù)值等基本類型值來說明按值傳遞參數(shù)比較簡單纯出,但如果使用對象蚯妇,那問題就不怎么好理解了。再舉一個(gè)例子:

function?setName(obj)?{

obj.name?=?"Nicholas";

}

var?person?=?new?Object();

setName(person);

alert(person.name);????//"Nicholas"

以上代碼中創(chuàng)建一個(gè)對象暂筝,并將其保存在了變量person中箩言。然后,這個(gè)變量被傳遞到setName()函數(shù)中之后就被復(fù)制給了obj焕襟。在這個(gè)函數(shù)內(nèi)部陨收,obj和person引用的是同一個(gè)對象。換句話說鸵赖,即使這個(gè)變量是按值傳遞的务漩,obj也會(huì)按引用來訪問同一個(gè)對象。于是卫漫,當(dāng)在函數(shù)內(nèi)部為obj添加name屬性后菲饼,函數(shù)外部的person也將有所反映;因?yàn)閜erson指向的對象在堆內(nèi)存中只有一個(gè)列赎,而且是全局對象宏悦。有很多開發(fā)人員錯(cuò)誤地認(rèn)為:在局部作用域中修改的對象會(huì)在全局作用域中反映出來镐确,就說明參數(shù)是按引用傳遞的。

本文由web前端精髓為您提供

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饼煞,一起剝皮案震驚了整個(gè)濱河市源葫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌砖瞧,老刑警劉巖息堂,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異块促,居然都是意外死亡荣堰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門竭翠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來振坚,“玉大人,你說我怎么就攤上這事斋扰《砂耍” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵传货,是天一觀的道長屎鳍。 經(jīng)常有香客問我,道長问裕,這世上最難降的妖魔是什么逮壁? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮僻澎,結(jié)果婚禮上貌踏,老公的妹妹穿的比我還像新娘。我一直安慰自己窟勃,他們只是感情好祖乳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著秉氧,像睡著了一般眷昆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上汁咏,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天亚斋,我揣著相機(jī)與錄音,去河邊找鬼攘滩。 笑死帅刊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的漂问。 我是一名探鬼主播赖瞒,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼女揭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了栏饮?” 一聲冷哼從身側(cè)響起吧兔,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎袍嬉,沒想到半個(gè)月后境蔼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡伺通,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年箍土,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罐监。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡涮帘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出笑诅,到底是詐尸還是另有隱情,我是刑警寧澤疮鲫,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布吆你,位于F島的核電站,受9級特大地震影響俊犯,放射性物質(zhì)發(fā)生泄漏妇多。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一燕侠、第九天 我趴在偏房一處隱蔽的房頂上張望者祖。 院中可真熱鬧,春花似錦绢彤、人聲如沸七问。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽械巡。三九已至,卻和暖如春饶氏,著一層夾襖步出監(jiān)牢的瞬間讥耗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工疹启, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留古程,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓喊崖,卻偏偏與公主長得像挣磨,于是被迫代替她去往敵國和親雇逞。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法趋急,類相關(guān)的語法喝峦,內(nèi)部類的語法,繼承相關(guān)的語法呜达,異常的語法谣蠢,線程的語...
    子非魚_t_閱讀 31,633評論 18 399
  • ECMAScript 中所有函數(shù)的參數(shù)都是按值傳遞的。也就是說查近,把函數(shù)外部的值復(fù)制給函數(shù)內(nèi)部的參數(shù)眉踱,就和把值從一...
    封清揚(yáng)閱讀 145評論 0 0
  • title: 原生js對象的淺拷貝和深拷貝的總結(jié) 這里是說明. 在此之前我們先復(fù)習(xí)兩個(gè)知識點(diǎn). 第一個(gè)知識點(diǎn):對象...
    KingJeason閱讀 836評論 1 8
  • 寧昊仔細(xì)一看,頓時(shí)后背驚起一片白毛細(xì)汗霜威。 那披頭散發(fā)的人正是林雪初谈喳,此時(shí)雪白的臉上帶著詭異的呲笑,正從二樓探出身子...
    可可豆子閱讀 179評論 0 5
  • 無雪的冬季戈泼, 藏匿著多情的你我婿禽, 在屋檐下、在寒風(fēng)里大猛, 在這里…… 在一切可已觸摸的空間里扭倾, 零距離的接觸, 有著...
    青塵楓月閱讀 208評論 0 0