1 回答

TA貢獻(xiàn)158條經(jīng)驗(yàn) 獲得超188個贊
你要理解將一個引用類型的值(對象)賦值給變量時(shí),該變量保存的值實(shí)際上只是一個指向內(nèi)存中該對象的指針、一個地址,而不是該對象本身。
?
你只有通過變量a中保存的這個指針去操作內(nèi)存中的對象并使其發(fā)生改變后,再通過b去訪問該對象時(shí),才會出現(xiàn) "我改變了a,所以b也跟著改變了" 這種錯覺,實(shí)際上在以上操作前提下,a和b都沒有發(fā)生過改變,改變的只是內(nèi)存中的那個對象。
你這個demo的問題出在第12行,你在這里通過字面量的方式創(chuàng)建了一個新的引用類型的值,并將其引用賦值給了變量a,此時(shí)變量a中所保存的值也就變成了指向這個新的對象在內(nèi)存中地址的指針了,而b還是指向第一個對象,所以你打印b就還是輸出 "[4]"
再然后在14行,你又將b所保存的值賦值給了a, 此時(shí)b和a再次指向一開始所創(chuàng)建的那個對象(即“[4]”),然后你在第15行通過"b.push"來操作了該對象,使對象的值發(fā)生了改變,因?yàn)榇藭r(shí)a和b指向同一對象,所以在16行通過a去訪問該對象時(shí)自然打印出改變后的值,即 "[4,44]"
ps:如果以上回答能對你有所幫助萬望采納~
添加回答
舉報(bào)