亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

基本數(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ù)類型的存儲(chǔ)

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

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

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

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

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

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

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

  • Array
  • Object

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

可以理解為,棧內(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};

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

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

復(fù)制

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

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

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

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

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

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

這有什么不同呢?

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

為什么?

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

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

總結(jié)

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

相關(guān)文章

  • 微信小程序文章詳情頁(yè)面實(shí)現(xiàn)代碼

    微信小程序文章詳情頁(yè)面實(shí)現(xiàn)代碼

    這篇文章主要介紹了微信小程序文章詳情頁(yè)面實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-09-09
  • javascript中強(qiáng)制執(zhí)行toString()具體實(shí)現(xiàn)

    javascript中強(qiáng)制執(zhí)行toString()具體實(shí)現(xiàn)

    Javascript通常會(huì)根據(jù)方法或運(yùn)算符的需要而自動(dòng)把值轉(zhuǎn)成所需的類型,這可能導(dǎo)致各種錯(cuò)誤,接下來(lái)為大家介紹下javascript如何強(qiáng)制執(zhí)行toString(),感興趣的朋友可以參考下哈
    2013-04-04
  • js阻止瀏覽器默認(rèn)行為的簡(jiǎn)單實(shí)例

    js阻止瀏覽器默認(rèn)行為的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇js阻止瀏覽器默認(rèn)行為的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-05-05
  • 妙用Bootstrap的 popover插件實(shí)現(xiàn)校驗(yàn)表單提示功能

    妙用Bootstrap的 popover插件實(shí)現(xiàn)校驗(yàn)表單提示功能

    最近使用bootstrap開發(fā)項(xiàng)目比較多,在表單校驗(yàn)功能中用popover插件實(shí)現(xiàn)出錯(cuò)提示功能很方面,下面小編給大家?guī)?lái)了一篇關(guān)于Bootstrap的 popover插件實(shí)現(xiàn)校驗(yàn)表單提示功能的實(shí)現(xiàn)代碼,非常不錯(cuò),感興趣的朋友一起看看吧
    2016-08-08
  • JavaScript使用AOP編程思想實(shí)現(xiàn)監(jiān)聽HTTP請(qǐng)求

    JavaScript使用AOP編程思想實(shí)現(xiàn)監(jiān)聽HTTP請(qǐng)求

    這篇文章主要為大家詳細(xì)介紹了如何在JavaScript使用AOP編程思想實(shí)現(xiàn)監(jiān)聽HTTP請(qǐng)求,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • JS面試必備之手寫call/apply/bind/new

    JS面試必備之手寫call/apply/bind/new

    在JavaScript中,call、apply、bind、new是Function對(duì)象自帶的三個(gè)方法,也是面試時(shí)??嫉闹R(shí)點(diǎn),所以本文就來(lái)和大家講講如何手寫實(shí)現(xiàn)這四個(gè)方法吧
    2023-05-05
  • JavaScript實(shí)現(xiàn)職責(zé)鏈模式概述

    JavaScript實(shí)現(xiàn)職責(zé)鏈模式概述

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)職責(zé)鏈模式概述,詳細(xì)的介紹了什么是職責(zé)鏈模式和實(shí)現(xiàn)方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • webpack結(jié)合express實(shí)現(xiàn)自動(dòng)刷新的方法

    webpack結(jié)合express實(shí)現(xiàn)自動(dòng)刷新的方法

    這篇文章主要給大家介紹了關(guān)于webpack結(jié)合express實(shí)現(xiàn)自動(dòng)刷新的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用webpack具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 淺談Webpack 是如何加載模塊的

    淺談Webpack 是如何加載模塊的

    這篇文章主要介紹了Webpack 是如何加載模塊的,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • javascript處理table表格的代碼

    javascript處理table表格的代碼

    javascript 處理table表格的代碼,學(xué)習(xí)js的朋友可以參考下。
    2010-12-12

最新評(píng)論