成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)及js數(shù)據(jù)存儲

Brenner / 491人閱讀

摘要:引用數(shù)據(jù)類型及堆內(nèi)存引用數(shù)據(jù)類型是保存在堆內(nèi)存中的對象,他的大小是不固定的?;A(chǔ)數(shù)據(jù)類型在變量對象里可以直接對應(yīng)對應(yīng)的值,而引用數(shù)據(jù)類型是存儲在堆里的,在變量對象中對應(yīng)的是堆內(nèi)存的地址。因為我們修改本質(zhì)上是修改了堆內(nèi)存里的數(shù)據(jù)。

? ??? ??因為以前前端開發(fā)跟數(shù)據(jù)存儲打交道比較少,javascript又具有自動垃圾回收機制。數(shù)據(jù)結(jié)構(gòu)以及存儲相關(guān)的概念,其實是很容易被前端er忽略的。但是因為現(xiàn)在大前端的趨勢,其實慢慢地,這些概念對于一個前端er來說也成了必須要掌握的技巧。
? ??? ??了解這些概念,對于我們?nèi)ダ斫饣緮?shù)據(jù)類型,引用數(shù)據(jù)類型,閉包,原型,原型鏈,事件循環(huán)等都有很好的促進作用。
? ??? ??接下來,我們先了解堆(heap),棧(stack),隊列(queue)這三種數(shù)據(jù)結(jié)構(gòu),再來分析js數(shù)據(jù)存儲相關(guān)的概念。
? ? ? ? 1 數(shù)據(jù)結(jié)構(gòu)

? ? ? ? 1.1 棧 棧是一種先進后出的數(shù)據(jù)結(jié)構(gòu)。
? ??? ??數(shù)據(jù)進入棧中之后,會被壓到棧底。類似于我們平常用的羽毛球球管的概念,第一個進去的是在球管的管低,第一個出來的是位于球管管頂?shù)淖詈笠粋€進去的羽毛球。 這個概念會在我們之后需要講到的執(zhí)行上下文中用到。

? ? ? ??
? ? ? ? 1.2 堆 是一種樹狀的數(shù)據(jù)結(jié)構(gòu),跟書架類似。
? ??? ??我們在書架取書的時候是不需要知道書的內(nèi)容的,只需要知道書名就知道需要取的是哪本書了。

? ? ? ? 1.3 隊列 是一種先進先出(FIFO)的數(shù)據(jù)結(jié)構(gòu)。
? ? ? ? 就像我們過安檢,誰排第一個誰就第一個接受安檢。這塊的概念主要是在事件循環(huán)機制中用到,可以更好的幫我們理解事件循環(huán)機制。

? ? ? ? 好啦,介紹完我們的基本數(shù)據(jù)結(jié)構(gòu),接下來就要詳細(xì)介紹js中的數(shù)據(jù)存儲方式了。

? ? ? ? 2 js數(shù)據(jù)存儲

? ? ? ? 2.1 基礎(chǔ)數(shù)據(jù)類型及變量對象

? ? ? ? 我們都知道js中基礎(chǔ)數(shù)據(jù)類型包括undefined,null,boolean,string,number。這些數(shù)據(jù)類型都是存儲在變量對象中的,我們都是按值訪問,可以直接操作保存在變量中的值。

? ? ? ? 其實,變量對象嚴(yán)格意義上來說也是存儲在對內(nèi)存中的,但是為了方便理解,我們還是需要對他和堆內(nèi)存做區(qū)分。

? ? ? ? 2.2 引用數(shù)據(jù)類型及堆內(nèi)存
? ? ? ? 引用數(shù)據(jù)類型是保存在堆內(nèi)存中的對象,他的大小是不固定的。而js是不允許直接操作對象的堆內(nèi)存空間的。我們實際操作對象的時候,是在操作對象的引用。所謂引用,可以理解成堆內(nèi)存內(nèi)對象的地址,給外界一個操作的入口。就像我們平常寫信,郵遞員都是按照地址去派發(fā)信件的。
? ? ? ? 2.3 數(shù)據(jù)存儲圖解
? ? ? ? 如下所示代碼,我們定義了4個基礎(chǔ)數(shù)據(jù)類型,定義了2個引用數(shù)據(jù)類型。基礎(chǔ)數(shù)據(jù)類型在變量對象里可以直接對應(yīng)對應(yīng)的值,而引用數(shù)據(jù)類型是存儲在堆里的,在變量對象中對應(yīng)的是堆內(nèi)存的地址。

? ? ? ? 而要真正理解引用數(shù)據(jù)類型,我們可以看下下面的賦值操作。
? ? ? ? 因為a是基礎(chǔ)數(shù)據(jù)類型,c是引用數(shù)據(jù)。c會有一個引用指向在堆里面真正的對象。

現(xiàn)在,我們進行復(fù)制操作,把a的值復(fù)制給b的時候,是把a真正的值賦值給了b。但是,將c復(fù)制給d的時候,是把c的引用賦值給了d。如代碼下方的圖示。

? ??? ??因此,當(dāng)我們修改b的值的時候,是不會影響a的值,但是修改c的值的時候,會影響d的值。因為我們修改c本質(zhì)上是修改了堆內(nèi)存里的數(shù)據(jù)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104737.html

相關(guān)文章

  • html基礎(chǔ)

    摘要:不存在或格式不正確會導(dǎo)致文檔以兼容模式呈現(xiàn)標(biāo)準(zhǔn)模式的排版和運作模式都是以該瀏覽器支持的最高標(biāo)準(zhǔn)運行。如果不能確定時,首選使用自然樣式標(biāo)簽 HTML 語義化 HTML標(biāo)簽的語義化是指:通過使用包含語義的標(biāo)簽(如h1-h6)恰當(dāng)?shù)乇硎疚臋n結(jié)構(gòu) css命名的語義化是指:為html標(biāo)簽添加有意義的class 為什么需要語義化: 去掉樣式后頁面呈現(xiàn)清晰的結(jié)構(gòu) 盲人使用讀屏器更好地閱讀 搜...

    sihai 評論0 收藏0
  • JS基礎(chǔ)】初談JS現(xiàn)有的數(shù)據(jù)類型

    摘要:相當(dāng)于相當(dāng)于相當(dāng)于基礎(chǔ)類型不屬于包裝的對象類型小結(jié)數(shù)據(jù)類型是每一個語言的基礎(chǔ)由于屬于弱類型腳本語言因此數(shù)據(jù)只有在賦值后才能直到變量的數(shù)據(jù)類型下一次我們具體介紹對象的概念 前言 在《你所不知道的javascript上篇》書籍 以及《javascript權(quán)威指南》等書籍里面, 均有介紹js的數(shù)據(jù)類型,對象,原型,繼承。結(jié)合工作經(jīng)驗, 以及借用一些開源庫和框架的源碼, 進行一次梳理。 首先介...

    xeblog 評論0 收藏0
  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問起有關(guān)與時,老司機們首先就會告訴你其實是個沒有網(wǎng)絡(luò)請求功能的庫。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評論0 收藏0
  • #yyds干貨盤點# 前端基礎(chǔ)知識面試集錦1

    摘要:作用標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別聲明位于位于文檔中的第一行,處于標(biāo)簽之前。又稱內(nèi)核及以上版本,等內(nèi)核及以上。存儲大小數(shù)據(jù)大小不能超過??梢苑乐箰阂馑⑵闭搲嗨行Х乐箤δ骋粋€特定注冊用戶用特定程序暴力方式進行不斷的登陸嘗試。 HTMLDoctype作用?標(biāo)準(zhǔn)模式與兼容模式各有什么區(qū)別?(1)、聲明位于位于HT...

    番茄西紅柿 評論0 收藏2637
  • 18年求職面經(jīng)總結(jié)

    摘要:年求職面經(jīng)及總結(jié)我的求職之路差不多走到盡頭了感覺真是精疲力盡了把這大半年的經(jīng)歷和面試總結(jié)寫下來希望能給和我一樣在求職路上煎熬的人一點幫助先說背景微電子科學(xué)與工程專業(yè)學(xué)過兩門和相關(guān)的課程語言和單片機這個專業(yè)的唯一好處就是大部分人并不知道這個專 18年求職面經(jīng)及總結(jié) 我的求職之路差不多走到盡頭了,感覺真是精疲力盡了.把這大半年的經(jīng)歷和面試總結(jié)寫下來,希望能給和我一樣在求職路上煎熬的人一點幫...

    zhangwang 評論0 收藏0

發(fā)表評論

0條評論

Brenner

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<