摘要:連續(xù)賦值今天看到一個(gè)面試題,一直想把這個(gè)題目解析更加直觀化,就跟看小人書一樣,看圖就能明白其中的原理,所以用做了幾張圖。
連續(xù)賦值
今天看到一個(gè)面試題,一直想把這個(gè)題目解析更加直觀化,就跟看小人書一樣,看圖就能明白其中的原理,所以用PPT做了幾張圖。
var a = {n: 1} var b = a; a.x = a = {n: 2} console.log(a.x); console.log(b.x)
這塊最難理解的就是這塊
a.x = a = {n: 2}
接下來(lái)我們從以下幾點(diǎn)分析以下:
運(yùn)算符優(yōu)先級(jí);
`我們知道運(yùn)算符的優(yōu)先級(jí)決定了表達(dá)式中運(yùn)算執(zhí)行的先后順序,優(yōu)先級(jí)高的運(yùn)算符最先被執(zhí)行。` 賦值運(yùn)算順序是從右往左的,不過(guò)由于“.”是優(yōu)先級(jí)最高的運(yùn)算符,所以這行代碼先“計(jì)算”了a.x;
優(yōu)先級(jí) | 運(yùn)算類型 | 關(guān)聯(lián)性 | 運(yùn)算符 |
---|---|---|---|
19 | 成員訪問(wèn) | 從左到右 | … . … |
3 | 賦值 | 從右到左 | … = … |
鏈接: 運(yùn)算符優(yōu)先級(jí)
堆棧圖來(lái)看怎么賦值操作的;
var a={n:1}; a指向了堆內(nèi)存中的對(duì)象{n:1}, var b=a; a賦予給b的時(shí)候傳的是棧中的地址(相當(dāng)于新建了一個(gè)不同名“指針”) ,而不是堆內(nèi)存中的對(duì)象。
a.x = a = {n: 2} ;前面說(shuō)了“.”的優(yōu)先級(jí)大于賦值運(yùn)算符的優(yōu)先級(jí),所以先來(lái)看a.x;a.x實(shí)際上是未定義的;
再來(lái)看賦值運(yùn)算符的從右向左解析;a = {n : 2},a被從新賦值,指向了一個(gè)新對(duì)象,而此時(shí)a.x已經(jīng)先行執(zhí)行完,其實(shí)指是{ n:1,x: undefined } 這個(gè)對(duì)象,接下來(lái)看左邊的等號(hào),這個(gè)對(duì)象的x值 = 等號(hào)右邊計(jì)算的結(jié)果(a={n:2},所以此時(shí)b的值通過(guò)箭頭可以看出等于{n:1,x:{n:2}},a的值指向新對(duì)象{n:2}
以上如有出入,請(qǐng)多指正~~~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/109228.html
摘要:值類型基本類型和棧內(nèi)存值類型也稱為原始數(shù)據(jù)或原始值這類值存儲(chǔ)在棧內(nèi)存中基本類型的值不可以修改。目前中的基本類型一共有六種。堆的使用規(guī)則當(dāng)創(chuàng)建數(shù)組時(shí),就會(huì)在堆內(nèi)存中創(chuàng)建一個(gè)數(shù)組對(duì)象,并且在棧內(nèi)存中創(chuàng)建一個(gè)對(duì)數(shù)組的引用。 值類型(基本類型)和棧內(nèi)存 值類型也稱為原始數(shù)據(jù)或原始值(primitive value).這類值存儲(chǔ)在棧(stack)內(nèi)存中, 基本類型的值不可以修改。每當(dāng)我們定義一個(gè)...
摘要:引子今天同事聊天群里發(fā)現(xiàn)了一道面試題基礎(chǔ),但答案基本沒有幾個(gè)能答對(duì)并且理解的很透徹的。但是此時(shí)這個(gè)內(nèi)存區(qū)并沒有被回收因?yàn)樽兞康闹羔樢廊恢赶蛩2⑶乙驗(yàn)橹熬吐暶髁藢傩运栽搩?nèi)存區(qū)增加了屬性。那么屬性指向哪兒呢它的返回值就是的內(nèi)存區(qū)。 引子 今天同事聊天群里發(fā)現(xiàn)了一道面試題(js基礎(chǔ)),但答案基本沒有幾個(gè)能答對(duì)并且理解的很透徹的。 問(wèn)題 var a = {n: 1}; var b = ...
摘要:引擎對(duì)堆內(nèi)存中的對(duì)象進(jìn)行分代管理新生代存活周期較短的對(duì)象,如臨時(shí)變量字符串等。內(nèi)存泄漏對(duì)于持續(xù)運(yùn)行的服務(wù)進(jìn)程,必須及時(shí)釋放不再用到的內(nèi)存。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第一期,本周的主題是調(diào)用堆棧,今天是第4天。 本計(jì)劃一共28期,每期重點(diǎn)攻克一個(gè)面試重難點(diǎn),如果你還不了解本進(jìn)階計(jì)劃...
摘要:引言半月刊第四期來(lái)啦,這段時(shí)間新增了道高頻面試題,今天就把最近半月匯總的面試題和部分答案發(fā)給大家,幫助大家查漏補(bǔ)缺,歡迎加群互相學(xué)習(xí)。更多更全的面試題和答案匯總在下面的項(xiàng)目中,點(diǎn)擊查看。引言 半月刊第四期來(lái)啦,這段時(shí)間 Daily-Interview-Question 新增了 14 道高頻面試題,今天就把最近半月匯總的面試題和部分答案發(fā)給大家,幫助大家查漏補(bǔ)缺,歡迎 加群 互相學(xué)習(xí)。 更多更...
摘要:有這樣一個(gè)熱門問(wèn)題其實(shí)這個(gè)問(wèn)題很好理解,關(guān)鍵要弄清下面兩個(gè)知識(shí)點(diǎn)引擎對(duì)賦值表達(dá)式的處理過(guò)程賦值運(yùn)算的右結(jié)合性一賦值表達(dá)式形如的表達(dá)式稱為賦值表達(dá)式。賦值表達(dá)式是右結(jié)合的。 有這樣一個(gè)熱門問(wèn)題: var a = {n: 1}; var b = a; a.x = a = {n: 2}; alert(a.x); // --> undefined alert(b.x); // --> {n: ...
閱讀 2870·2021-10-14 09:43
閱讀 1657·2021-09-29 09:34
閱讀 1743·2021-07-28 00:16
閱讀 2962·2019-08-30 15:53
閱讀 2905·2019-08-30 13:59
閱讀 2961·2019-08-30 13:57
閱讀 1091·2019-08-26 13:38
閱讀 1893·2019-08-26 13:25