2019-06-12

一直對(duì)Javscript中的值傳遞引用傳遞的感到模糊接癌,今天來(lái)細(xì)細(xì)研究一下

概念

  • 值傳遞:調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)復(fù)制一份傳遞到函數(shù)中蕊玷,在函數(shù)中如果對(duì)參數(shù)進(jìn)行修改邮利,將不會(huì)影響到實(shí)際參數(shù)

  • 引用傳遞:調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)地址傳遞到函數(shù)中,在函數(shù)中對(duì)參數(shù)所進(jìn)行的修改垃帅,將影響到實(shí)際參數(shù)

  • 理解:值傳遞是針對(duì)基本類(lèi)型的延届,引用傳遞是針對(duì)引用類(lèi)型的。傳參可以理解為復(fù)制變量的值贸诚,把這個(gè)副本傳遞給形參
    1.基本類(lèi)型復(fù)制后方庭,形參和實(shí)參完全是獨(dú)立的,不管改變哪一個(gè)酱固,都不會(huì)對(duì)另一個(gè)產(chǎn)生影響
    2.引用傳遞本質(zhì)上還是傳值械念,首先在棧中開(kāi)辟形參引用,然后把實(shí)參引用的值傳遞給形參引用

值傳遞

ction add(num) {
    num++;
    console.log("形參:", num);// 形參:21
}

var a = 20;
add(a);
console.log("實(shí)參:", a);// 實(shí)參:20

引用傳遞

function setNum(obj) {
    obj.num = 10;
    console.log("形參:", obj);// 形參:num = 10
}

var a = new Object();
setNum(a);
console.log("實(shí)參:", a);// 實(shí)參:num = 10

解析
當(dāng) var a = new Object()运悲;下圖時(shí)變量和對(duì)象的關(guān)系龄减;

image.png

調(diào)用setNum(a)時(shí),下圖時(shí)全局變量a和局部變量obj以及對(duì)象Object的關(guān)系:
image.png

  • 這段代碼創(chuàng)建了一個(gè)Object對(duì)象班眯,變量(引用)a指向這個(gè)Object對(duì)象希停。
  • 調(diào)用setNum(a)烁巫,在這個(gè)函數(shù)內(nèi)部,obj和a都引用的是同一個(gè)Object對(duì)象宠能,即a和Obj都指向同一個(gè)內(nèi)存堆地址亚隙。因此,通過(guò)傳遞實(shí)參引用a,對(duì)形參引用obj添加num屬性后违崇,也影響到了實(shí)參引用a阿弃。
  • 所以,很多人就會(huì)被這種假象所蒙蔽羞延,錯(cuò)誤的認(rèn)為:在局部作用域修改對(duì)象恤浪,會(huì)在全局對(duì)象中反映出來(lái),就說(shuō)明參數(shù)是引用傳遞
function setNum(obj) {
    obj.num = 10;
    obj = new Object();
    obj.num = 20;
    console.log("形參:", obj);// 20
}

var a = new Object();
setNum(a);
console.log("實(shí)參:", a); // 10

解析
在函數(shù)內(nèi)部創(chuàng)建obj對(duì)象 obj = new Object(); 下圖是a和obj以及Object的關(guān)系:

image.png

這段代碼在前一個(gè)的基礎(chǔ)上肴楷,給setNum()函數(shù)中添加了兩行代碼:obj = new Object()改變了obj的指向水由;obj.num = 20給新創(chuàng)建的obj添加屬性。根據(jù)結(jié)果來(lái)看赛蔫,形參的改變并沒(méi)有影響到實(shí)參砂客,所以,在JS中呵恢,引用傳遞的本質(zhì)就是值傳遞鞠值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市渗钉,隨后出現(xiàn)的幾起案子彤恶,更是在濱河造成了極大的恐慌,老刑警劉巖鳄橘,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件声离,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡瘫怜,警方通過(guò)查閱死者的電腦和手機(jī)术徊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鲸湃,“玉大人赠涮,你說(shuō)我怎么就攤上這事“堤簦” “怎么了笋除?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)炸裆。 經(jīng)常有香客問(wèn)我垃它,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任嗤瞎,我火速辦了婚禮墙歪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贝奇。我一直安慰自己虹菲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布掉瞳。 她就那樣靜靜地躺著毕源,像睡著了一般。 火紅的嫁衣襯著肌膚如雪陕习。 梳的紋絲不亂的頭發(fā)上霎褐,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音该镣,去河邊找鬼冻璃。 笑死,一個(gè)胖子當(dāng)著我的面吹牛损合,可吹牛的內(nèi)容都是我干的省艳。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼嫁审,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼跋炕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起律适,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辐烂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后捂贿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體纠修,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年眷蜓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了分瘾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吁系,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出白魂,到底是詐尸還是另有隱情汽纤,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布福荸,位于F島的核電站蕴坪,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜背传,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一呆瞻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧径玖,春花似錦痴脾、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至冤灾,卻和暖如春前域,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背韵吨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工匿垄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人归粉。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓年堆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親盏浇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子变丧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

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