<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        js基礎心法之數據類型

        來源:懂視網 責編:小采 時間:2020-11-27 19:30:11
        文檔

        js基礎心法之數據類型

        js基礎心法之數據類型:一個很基礎的知識點,這篇主要是介紹JavaScript中基本數據類型和引用數據類型是如何存儲的,需要的朋友可以參考下由于自己是野生程序員,在剛開始學習程序設計的時候沒有在意內存這些基礎知識,導致后來在提到什么什么是存在棧中的,棧中只是存了一個引用
        推薦度:
        導讀js基礎心法之數據類型:一個很基礎的知識點,這篇主要是介紹JavaScript中基本數據類型和引用數據類型是如何存儲的,需要的朋友可以參考下由于自己是野生程序員,在剛開始學習程序設計的時候沒有在意內存這些基礎知識,導致后來在提到什么什么是存在棧中的,棧中只是存了一個引用

        堆是基于散列算法的數據結構。

        隊列

        隊列是一種先進先出(FIFO)的數據結構。

        JavaScript中數據類型的存儲

        JavaScript中將數據類型分為基本數據類型和引用數據類型,它們其中有一個區別就是存儲的位置不同。

        基本數據類型

        我們都知道JavaScript中的基本數據類型有:

      1. String

      2. Number

      3. Boolean

      4. Undefined

      5. Null

      6. Symbol(暫時不管)

      7. 基本數據類型都是一些簡單的數據段,它們是存儲在棧內存中。

        引用數據類型

        JavaScript中的引用數據類型有:

      8. Array

      9. Object

      10. 引用數據類型是保存在堆內存中的,然后再棧內存中保存一個對堆內存中實際對象的引用。所以,JavaScript中對引用數據類型的操作都是操作對象的引用而不是實際的對象。

        可以理解為,棧內存中保存了一個地址,這個地址和堆內存中的實際值是相關的。

        圖解

        現在,我們聲明幾個變量試試:

        可以通過下圖來表示數據類型在內存中的存儲情況:

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

        復制

        基本數據類型

        對于基本數據類型,如果進行復制,系統會自動為新的變量在棧內存中分配一個新值,很容易理解。

        引用數據類型

        如果對于數組、對象這樣的引用數據類型而言,復制的時候就會有所區別了:

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

        如果所示,執行了var objCopy=obj之后,obj和objCopy具有相同的地址值,執行堆內存中的同一個實際對象。

        這有什么不同呢?

        當我修改obj或objCopy時,都會引起另一個變量的改變。

        為什么?

        為什么基礎數據類型存在棧中,而引用數據類型存在堆中呢?

        1. 堆比棧大,棧比對速度快。

        2. 基礎數據類型比較穩定,而且相對來說占用的內存小。

        3. 引用數據類型大小是動態的,而且是無限的。

        4. 堆內存是無序存儲,可以根據引用直接獲取。

        參考文章

        理解js內存分配

        原始值和引用值

        在ECMAScript中,變量可以存放兩種類型的值,即原始值和引用值。
        原始值指的就是代表原始數據類型(基本數據類型)的值,即Undefined,Null,Number,String,Boolean類型所表示的值。
        引用值指的就是復合數據類型的值,即Object,Function,Array,以及自定義對象,等等

        棧和堆

        與原始值與引用值對應存在兩種結構的內存即棧和堆
        棧是一種后進先出的數據結構,在javascript中可以通過Array來模擬棧的行為

        原始值是存儲在棧中的簡單數據,也就是說,他們的值直接存儲在變量訪問的位置。

        堆是基于散列算法的數據結構,在javascript中,引用值是存放在堆中的。
        引用值是存儲在堆中的對象,也就是說,存儲在變量處的值(即指向對象的變量,存儲在棧中)是一個指針,指向存儲在堆中的實際對象.

        例:var obj = new Object(); obj存儲在棧中它指向于new Object()這個對象,而new Object()是存放在堆中的。

        那為什么引用值要放在堆中,而原始值要放在棧中,不都是在內存中嗎,為什么不放在一起呢?那接下來,讓我們來探索問題的答案!

        首先,我們來看一下代碼:

        然后我們來看一下內存分析圖:

        變量num,bol,str為基本數據類型,它們的值,直接存放在棧中,obj,person,arr為復合數據類型,他們的引用變量存儲在棧中,指向于存儲在堆中的實際對象。

        由上圖可知,我們無法直接操縱堆中的數據,也就是說我們無法直接操縱對象,但我們可以通過棧中對對象的引用來操作對象,就像我們通過遙控機操作電視機一樣,區別在于這個電視機本身并沒有控制按鈕。

        現在讓我們來回答為什么引用值要放在堆中,而原始值要放在棧中的問題:

        記住一句話:能量是守衡的,無非是時間換空間,空間換時間的問題

        堆比棧大,棧比堆的運算速度快,對象是一個復雜的結構,并且可以自由擴展,如:數組可以無限擴充,對象可以自由添加屬性。將他們放在堆中是為了不影響棧的效率。而是通過引用的方式查找到堆中的實際對象再進行操作。相對于簡單數據類型而言,簡單數據類型就比較穩定,并且它只占據很小的內存。不將簡單數據類型放在堆是因為通過引用到堆中查找實際對象是要花費時間的,而這個綜合成本遠大于直接從棧中取得實際值的成本。所以簡單數據類型的值直接存放在棧中。

        總結:

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        js基礎心法之數據類型

        js基礎心法之數據類型:一個很基礎的知識點,這篇主要是介紹JavaScript中基本數據類型和引用數據類型是如何存儲的,需要的朋友可以參考下由于自己是野生程序員,在剛開始學習程序設計的時候沒有在意內存這些基礎知識,導致后來在提到什么什么是存在棧中的,棧中只是存了一個引用
        推薦度:
        標簽: js 類型 基礎
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲中文字幕第一页在线 | 国产福利免费观看| 深夜a级毛片免费视频| 亚洲AV午夜福利精品一区二区| 一本岛高清v不卡免费一三区| 女人裸身j部免费视频无遮挡| 久久久久亚洲av无码专区蜜芽| 成人无遮挡毛片免费看| 一级午夜免费视频| 亚洲乱码中文字幕小综合| 精品国产亚洲一区二区在线观看| 120秒男女动态视频免费| 四虎精品免费永久免费视频| 中文字幕亚洲综合久久2| 免费国产成人高清在线观看麻豆| 99爱免费观看视频在线| 无遮挡国产高潮视频免费观看 | 亚洲精品蜜夜内射| 亚洲国产二区三区久久| 亚洲A∨精品一区二区三区| 日本片免费观看一区二区| 一二三区免费视频| 亚洲国产成人精品无码区花野真一| 亚洲AV无码乱码国产麻豆穿越| 四虎影视在线永久免费看黄| 亚洲成人在线免费观看| a级在线免费观看| 美女黄频视频大全免费的| 亚洲国产精品网站久久| 亚洲综合色自拍一区| 国产成人aaa在线视频免费观看| 日韩免费人妻AV无码专区蜜桃 | 四虎影视免费在线| 57pao国产成视频免费播放| 三级毛片在线免费观看| 免费无码又爽又黄又刺激网站 | 最近中文字幕mv免费高清视频8| www在线观看免费视频| 国产成人精品亚洲一区| 亚洲午夜理论片在线观看| 亚洲精品人成电影网|