javascript面試題,關於連續賦值的坑?

時間 2021-06-01 00:06:25

1樓:破軍

假設 的位址為 0xfff

a 指向該位址,b 又指向a,所以在定義階段,a和b 的位址都指向了 0xfff

接著就是重頭戲了且在連等中,相當於是乙個函式體**,只有當結束的時候才能改變位址,因為此原因,導致a.c中的a並沒有因為等號後面的a的指向改變而改變,a.c中的a依然指向 0xfff,而等號後面的a已經指向了 對應的 0x000了

由上可得,0xfff中又多了乙個屬性c,c指向了0x000;a 的位址改為了 0x000

而 b 的位址沒有改變,還是0xfff

所以後面列印的a.c 列印的是 0x000中的c 也就是undefined

b.c 列印的是 0xfff中的c 也就是 0x000 位址對應的值

最後驗證一下,b.c === a;結果為true

也就是說明了他們是同乙個物件,故猜測成立

** 又猜測可能為運算環境,在運算環境中,為了值的安全性,只有當運算結束時才能進行賦值

例如 a = 1; a = a + 1;

在執行中,等號右側中的a就保持之前的值,也就是之前的位址,只有當運算結束了,a才改變了指向

如果在運算中就改變了值的引用位址,就會出現無限迴圈,造成死鎖

2樓:poto

a.x = a = ;

a.x(老物件a的x) = a (新物件)其實相當於:

.x =

so...

a.x = undefined

b.x =

這樣不知道是不是好理解點。

3樓:shelly雪梨

a.x和a先被提出來,但是.運算子優先順序高於賦值運算子,所以先建立a.

x=undefined 然後連等賦值從右到左先執行a=,此時a的引用已經改變,但是記憶體裡儲存著的a還是之前和b引用相同位址的a,所以就變成了對b增添屬性,即}

4樓:孫山

連續賦值的時候,a.x作為乙個指標已經確定,即使右側先進行了替換a的複製,a.x的主語依然是原來的a,所以之後的b應該是}

一道關於概率的面試題?

木夏 長夜漫漫,又是乙個明早要上課卻無法入睡的夜晚.和劍靈答的相反,我覺得最後應該是趨於所有人都感染才對,A為受感染男性比例,B為受感染女性比例,A B 1 但人數又無窮,根本感染不完呀,這題好像沒法穩定。其實我強行算了乙個解,穩定條件是感染人數的增加比率相同,而不是比率等於期望。結果和初始條件感染...

Hive面試題求解答?

侏羅紀 記eventA,eventB的行數分別為N1,N2 1.對eventA,eventB分別排序。時間複雜度 N1 log N1 N2 log N2 2.select row number over order by time as rowno,into temp from select b.i...

Java資料結構面試題

掌燈者 我是來認真回答問題的,因為我之前做夢夢到這個場景了 什麼鬼啊!真的 認真臉。前幾天睡前看了食屍鬼的更新,就是店長要和CCG開戰那會兒。晚上就開始做夢,很長很長,而且很累。夢到我自己變成食屍鬼,還是和爸媽生活在一起,但是我必須在他們睡著的時候想辦法出去吃人。很餓很害怕。揹負著滿身的罪惡前行。我...