第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js高程中第71頁中的例子(關(guān)于傳遞參數(shù)的引用類型值的傳遞),兩個小問題理解不來

js高程中第71頁中的例子(關(guān)于傳遞參數(shù)的引用類型值的傳遞),兩個小問題理解不來

繁華開滿天機 2019-02-13 17:15:20
舉一個例子:function setName(obj) {obj.name = "Nicholas";}var person = new Object();setName(person);alert(person.name); //"Nicholas"FunctionArgumentsExample02.htm以上代碼中創(chuàng)建一個對象,并將其保存在了變量 person 中。然后,這個變量被傳遞到 setName()函數(shù)中之后就被復(fù)制給了 obj 。在這個函數(shù)內(nèi)部, obj 和 person 引用的是同一個對象。**換句話說,即使這個變量是按值傳遞的, obj 也會按引用來訪問同一個對象。---問題1:這里說的按值傳遞,這個值是指什么?**于是,當(dāng)在函數(shù)內(nèi)部為 obj 添加 name屬性后,函數(shù)外部的 person 也將有所反映;因為 person 指向的對象在堆內(nèi)存中只有一個,而且是全局對象。有很多開發(fā)人員錯誤地認(rèn)為:在局部作用域中修改的對象會在全局作用域中反映出來,就說明參數(shù)是按引用傳遞的。為了證明對象是按值傳遞的,我們再看一看下面這個經(jīng)過修改的例子:這個例子與前一個例子的唯一區(qū)別,就是在 setName() 函數(shù)中添加了兩行代碼:一行代碼為 obj重新定義了一個對象,另一行代碼為該對象定義了一個帶有不同值的 name 屬性。**在把 person 傳遞給setName() 后,其 name 屬性被設(shè)置為 "Nicholas" 。---問題二:屬性被修改后能在函數(shù)外部讀取到,不就是引用類型嘛?后面的解釋理解不了**然后,又將一個新對象賦給變量 obj ,同時將其 name屬性設(shè)置為 "Greg" 。如果 person 是按引用傳遞的,那么 person 就會自動被修改為指向其 name 屬性值為 "Greg" 的新對象。但是,當(dāng)接下來再訪問 person.name 時,顯示的值仍然是 "Nicholas" 。這說明即使在函數(shù)內(nèi)部修改了參數(shù)的值,但原始的引用仍然保持未變。實際上,當(dāng)在函數(shù)內(nèi)部重寫 obj 時,這個變量引用的就是一個局部對象了。而這個局部對象會在函數(shù)執(zhí)行完畢后立即被銷毀。
查看完整描述

2 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗 獲得超9個贊

的確這里不太像是一般理解中的按值傳遞。

其實這里高程的例子已經(jīng)講的不錯了,引用類型傳入時候會創(chuàng)建一個新的同樣的對象并且賦值給形參。

類似于創(chuàng)建了一個新的地址,指針指向了實參地址,于是這個時候修改形參變量能夠同步修改到實參,但是如果重新賦值形參,則是修改了其指針指向,不再指向?qū)崊⒌刂贰?/p>


查看完整回答
反對 回復(fù) 2019-02-26
?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗 獲得超9個贊

怕我說不清,找了個鏈接深入理解參數(shù)按值傳遞
簡單的總結(jié):

參數(shù)如果是基本類型是按值傳遞,如果是引用類型按共享傳遞。

但是因為拷貝副本也是一種值的拷貝,所以在高程中也直接認(rèn)為是按值傳遞了


查看完整回答
反對 回復(fù) 2019-02-26
  • 2 回答
  • 0 關(guān)注
  • 456 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號