最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript數(shù)據(jù)類型的存儲方法詳解

 更新時(shí)間:2017年08月25日 08:34:16   作者:郭東生blog  
JavaScript中基本數(shù)據(jù)類型和引用數(shù)據(jù)類型是如何存儲的呢?下面通過本文給大家分享js數(shù)據(jù)類型的存儲方法,需要的朋友參考下吧

一個(gè)很基礎(chǔ)的知識點(diǎn),JavaScript中基本數(shù)據(jù)類型和引用數(shù)據(jù)類型是如何存儲的。

由于自己是野生程序員,在剛開始學(xué)習(xí)程序設(shè)計(jì)的時(shí)候沒有在意內(nèi)存這些基礎(chǔ)知識,導(dǎo)致后來在提到“什么什么是存在棧中的,棧中只是存了一個(gè)引用”這樣的話時(shí)總是一臉懵逼。。

后來漸漸的了解了一些內(nèi)存的知識,這部分還是非常有必要了解的。

基本數(shù)據(jù)結(jié)構(gòu)

棧,只允許在一段進(jìn)行插入或者刪除操作的線性表,是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu)。

堆是基于散列算法的數(shù)據(jù)結(jié)構(gòu)。

隊(duì)列

隊(duì)列是一種先進(jìn)先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。

JavaScript中數(shù)據(jù)類型的存儲

JavaScript中將數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,它們其中有一個(gè)區(qū)別就是存儲的位置不同。

基本數(shù)據(jù)類型

我們都知道JavaScript中的基本數(shù)據(jù)類型有:

  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol(暫時(shí)不管)

基本數(shù)據(jù)類型都是一些簡單的數(shù)據(jù)段,它們是存儲在棧內(nèi)存中。

引用數(shù)據(jù)類型

JavaScript中的引用數(shù)據(jù)類型有:

  • Array
  • Object

引用數(shù)據(jù)類型是保存在堆內(nèi)存中的,然后再棧內(nèi)存中保存一個(gè)對堆內(nèi)存中實(shí)際對象的引用。所以,JavaScript中對引用數(shù)據(jù)類型的操作都是操作對象的引用而不是實(shí)際的對象。

可以理解為,棧內(nèi)存中保存了一個(gè)地址,這個(gè)地址和堆內(nèi)存中的實(shí)際值是相關(guān)的。

圖解

現(xiàn)在,我們聲明幾個(gè)變量試試:

var name="axuebin";
var age=25;
var job;
var arr=[1,2,3];
var obj={age:25};

可以通過下圖來表示數(shù)據(jù)類型在內(nèi)存中的存儲情況:

此時(shí) name , age , job 三種基本數(shù)據(jù)類型是直接存在棧內(nèi)存中的,而 arr , obj 在棧內(nèi)存中只是存了一個(gè)地址來表示對堆內(nèi)存中的引用。

復(fù)制

基本數(shù)據(jù)類型

對于基本數(shù)據(jù)類型,如果進(jìn)行復(fù)制,系統(tǒng)會自動為新的變量在棧內(nèi)存中分配一個(gè)新值,很容易理解。

引用數(shù)據(jù)類型

如果對于數(shù)組、對象這樣的引用數(shù)據(jù)類型而言,復(fù)制的時(shí)候就會有所區(qū)別了:

系統(tǒng)也會自動為新的變量在棧內(nèi)存中分配一個(gè)值,但這個(gè)值僅僅是一個(gè)地址。也就是說,復(fù)制出來的變量和原有的變量具有相同的地址值,指向堆內(nèi)存中的同一個(gè)對象。

如果所示,執(zhí)行了 var objCopy=obj 之后, obj 和 objCopy 具有相同的地址值,執(zhí)行堆內(nèi)存中的同一個(gè)實(shí)際對象。

這有什么不同呢?

當(dāng)我修改 obj 或 objCopy 時(shí),都會引起另一個(gè)變量的改變。

為什么?

為什么基礎(chǔ)數(shù)據(jù)類型存在棧中,而引用數(shù)據(jù)類型存在堆中呢?

  1. 堆比棧大,棧比對速度快。
  2. 基礎(chǔ)數(shù)據(jù)類型比較穩(wěn)定,而且相對來說占用的內(nèi)存小。
  3. 引用數(shù)據(jù)類型大小是動態(tài)的,而且是無限的。
  4. 堆內(nèi)存是無序存儲,可以根據(jù)引用直接獲取。

總結(jié)

以上所述是小編給大家介紹的JavaScript數(shù)據(jù)類型的存儲方法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

长乐市| 姚安县| 渑池县| 白朗县| 乌鲁木齐县| 酉阳| 青岛市| 万荣县| 凉山| 高淳县| 靖宇县| 米脂县| 宝山区| 略阳县| 深水埗区| 红河县| 清徐县| 昌宁县| 保山市| 抚州市| 辽中县| 老河口市| 淮北市| 邹平县| 平凉市| 阳曲县| 嵊泗县| 平远县| 鲁甸县| 方城县| 抚松县| 扶绥县| 津南区| 台北市| 徐汇区| 青州市| 洞头县| 德兴市| 襄城县| 岚皋县| 卓资县|