JavaScript中的實值型別和參考型別

來源:互聯網
上載者:User

標籤:改變   fine   變數類型   賦值   引用   布爾   null   style   undefined   

先拋出一個題目,阿里的筆試面試題(很基礎,但確實是阿里的筆試題)

var a = {"x": 1};

var b = a;

a.x = 2;

a = {"x": 3};

console.log(b.x);

大家覺得最後在控制台輸出的結果是多少?

如果你答案是2,那你就沒必要接下去看了。如果不是。那你就接著看下去來解決你的疑惑吧!

JavaScript中的實值型別和參考型別

在javascript裡面有兩種變數類型,一種是實值型別,一種是參考型別。

實值型別:數值、布爾型、null、undefined

參考型別:數組、對象、函數

實值型別的變數的交換就就是普通的交換。比如:var a = 1; var b = a; a = 2;console.log(b);//結果是1。b不會因為a改變而改變

參考型別和實值型別就不一樣了。比如:var a = [1,2];var b = a;//這時候將a賦值b跟上面的實值型別的賦值就不一樣 。這裡可以用指標來理解,聲明的a變數其實就可以把他當作一個指向數組[1,2]的指標。

更形象點,可以這樣理解:將[1,2]比作寶藏,a就是藏寶圖。可以根據a找到[1,2]這個數組。其中 var b = a;就相當於複製了一個藏寶圖給b,b就也可以找到[1,2]數組。明白了這個就好理解下面的東西了。

如果a[0] = 3;那麼console.log(b)就會輸出[3,2]。因為a[0] = 3直接改變可寶藏裡面的東西。所有b得到的數組也發生了變化。

JavaScript中的實值型別和參考型別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.