<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一、數據結構 - 數組(Array) - 棧(Stack) - 隊列(Queue) - 鏈表(Linked List) - 樹(Tree) - 圖(Graph) - 堆(Heap) - 散列表(Hash) ## 二、棧和堆 ### stack棧 > 棧是一種遵循**后進先出(LIFO)**原則的有序集合。新添加的或待刪除的元素都保存在棧的同一端,稱作**棧頂**,另一端就叫**棧底**。在棧里,新元素都接近棧頂,舊元素都接近棧底。stack為自動分配的內存空間,它由系統自動釋放。 ### heap堆 > 堆是基于散列算法的數據結構。heap是動態分配的內存,大小不定也不會自動釋放。 ## 三、基本類型和引用類型 基本類型:存放在**棧內存**中的簡單數據段,數據大小確定,內存空間大小可以分配。 5種基本數據類型有Undefined、Null、Boolean、Number 和 String,它們是直接按值存放的,所以可以直接訪問。 引用類型:存放在**堆內存**中的對象,變量實際保存的是一個指針,這個指針指向另一個位置。每個空間大小不一樣,要根據情況開進行特定的分配。 當我們需要訪問引用類型(如對象(Object {}),數組(Array []),函數(Function)等)的值時,首先從棧中獲得該對象的地址指針,然后再從堆內存中取得所需的數據。 ## 四、傳值與傳址 基本類型與引用類型最大的區別實際就是傳值與傳址的區別。測試用例: ~~~ var a = [1,2,3,4,5]; var b = a; var c = a[0]; alert(b); // 1,2,3,4,5 alert(c); // 1 //改變數值 b[4] = 6; c = 7; alert(a[4]); // 6 alert(a[0]); // 1 ~~~ 從上面我們可以得知,當我改變b中的數據時,a中數據也發生了變化;但是當我改變c的數據值時,a卻沒有發生改變。 這就是傳值與傳址的區別。因為a是數組,屬于引用類型,所以它賦予給b的時候傳的是棧中的地址(相當于新建了一個不同名“指針”),而不是堆內存中的對象。而c僅僅是從a堆內存中獲取的一個數據值,并保存在棧中。所以b修改的時候,會根據地址回到a堆中修改,c則直接在棧中修改,并且不能指向a堆內存中。 ![](https://box.kancloud.cn/03546ee1afa58adfd2303e20e4b423cf_549x266.jpg) ## 五、棧與隊列的進出方式 - 棧 ![](https://box.kancloud.cn/2ea224ab57ce00b086e0a0b0ebcedf1f_739x361.png) - 隊列 ![](https://box.kancloud.cn/d36074bfb718ce3e7fa0b3b0768253eb_800x527.png) 文章參考: [關于JS堆棧與拷貝](http://www.cnblogs.com/chengguanhui/p/4737413.html) [JS數據結構與算法\_棧&隊列](https://segmentfault.com/a/1190000017905515)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看