亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

進擊的 JavaScript(二) 之 數(shù)據(jù)結(jié)構(gòu)

BlackFlagBin / 662人閱讀

摘要:的垃圾回收器,進行回收。它們的數(shù)據(jù)就存放在堆內(nèi)存中,大小不一定,動態(tài)分配內(nèi)存,可隨時修改。引用類型的變量存的是其在堆內(nèi)存中的地址,值的讀取,就是讀取這個內(nèi)存地址中儲存的內(nèi)容。

這東西還是很重要的,你要是搞懂了,就會去除很多困惑,比如不知道大家在學(xué)習(xí)js 的時候,有沒有對 基礎(chǔ)類型 和 引用類型 感到困惑過,兩者之間 表現(xiàn)的不同之處。

js 不同其他編程語言,它是腳本語言。所以,它的數(shù)據(jù)結(jié)構(gòu)嚴(yán)格意義上是不存在的,但是還是可以簡單的歸納為三種結(jié)構(gòu),分別為 堆、棧、隊列。

一、棧(stack)

它的特征就是:先進后出,自動分配內(nèi)存,占據(jù)固定大小的空間,會自動釋放。

二、堆(heap)

它的特征就是:動態(tài)分配的內(nèi)存,大小不定也不會自動釋放。js的垃圾回收器,進行回收。

三、隊列(queue)

它的特征就是:先進先出,就跟你排隊上公交一樣,誰先來的,誰先上。(說插隊的那位同學(xué),我不跟你抬杠 (— 。 ——))。
它理解 事件循環(huán)Event Loop 的基礎(chǔ)。

四、基本類型和引用類型與堆棧
(1)、棧(stack) 和 基本類型

基本類型:Undefined、Null、Boolean、Number 和 String,它們的值就存放在棧(stack)內(nèi)存中,數(shù)據(jù)大小確定,內(nèi)存空間大小可以分配。

棧中存放簡單的數(shù)據(jù)段,比如,參數(shù)值,局部變量值(全局變量為全局對象的屬性)。

棧的值都是不可修改的,只能重新分配。這就解釋了,為啥,字符串創(chuàng)建后是不能更改的(其他基本類型一樣,只是表現(xiàn)的不明顯)。

所以,你就可以記住數(shù)字,布爾,字符串的方法 都是返回一個新的值,而不會修改原來的值了。

基本類型的復(fù)制

var num1 = 666;
var num2 = num1;
num2 = 566;

console.log(num2);    //566

基本類型的比較

666 === 666        //true
"zdx" === "zdx"    //true
true === false     //false
(2)、堆(heap) 和 引用類型

引用類型:對象,數(shù)組。

它們的數(shù)據(jù)就存放在 堆內(nèi)存(heap)中,大小不一定,動態(tài)分配內(nèi)存,可隨時修改。

引用類型的變量存的是其在堆內(nèi)存中的地址,值的讀取,就是讀取 這個內(nèi)存地址中儲存的內(nèi)容。

引用類型的復(fù)制

var obj1 = {a:6};
var obj2 = obj1;
obj2.a = 5;

console.log(obj1.a)     //5

引用類型的比較

var obj1 = {a:666};
var obj2 = {a:666};

obj1 === obj2;     //false

var obj3 = obj1;
obj1 === obj3;     //true
總結(jié):復(fù)制 或 比較 都是操作變量保存的值,但基礎(chǔ)類型的變量保存數(shù)據(jù),而引用類型的變量保存的是數(shù)據(jù)對應(yīng)的地址。

不知道你知不知道 ES6 的 const,一般都用它來聲明,就是這個道理。

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

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

相關(guān)文章

  • 進擊JavaScript)詞法作用域與作用域鏈

    摘要:一作用域域表示的就是范圍,即作用域,就是一個名字在什么地方可以使用,什么時候不能使用。概括的說作用域就是一套設(shè)計良好的規(guī)則來存儲變量,并且之后可以方便地找到這些變量。 一、作用域 域表示的就是范圍,即作用域,就是一個名字在什么地方可以使用,什么時候不能使用。想了解更多關(guān)于作用域的問題推薦閱讀《你不知道的JavaScript上卷》第一章(或第一部分),從編譯原理的角度說明什么是作用域。概...

    denson 評論0 收藏0
  • 進擊JavaScript(一)變量聲明提升

    摘要:如下代碼輸出的結(jié)果是代碼執(zhí)行分為兩個大步預(yù)解析的過程代碼的執(zhí)行過程預(yù)解析與變量聲明提升程序在執(zhí)行過程中,會先將代碼讀取到內(nèi)存中檢查,會將所有的聲明在此進行標(biāo)記,所謂的標(biāo)記就是讓解析器知道有這個名字,后面在使用名字的時候不會出現(xiàn)未定義的錯誤。 showImg(https://segmentfault.com/img/remote/1460000012922850); 如下代碼輸出的結(jié)果是...

    LeexMuller 評論0 收藏0
  • 進擊JavaScript(三)玩轉(zhuǎn)閉包

    摘要:為了更好的理解,在閱讀此文之前建議先閱讀上一篇進擊之詞法作用域與作用域鏈?zhǔn)裁词情]包閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結(jié)構(gòu)。在中函數(shù)構(gòu)成閉包。 為了更好的理解,在閱讀此文之前建議先閱讀上一篇《進擊JavaScript之詞法作用域與作用域鏈》 1.什么是閉包 閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結(jié)構(gòu)。所謂的閉包就是...

    cyixlq 評論0 收藏0
  • 進擊JavaScript(四)原型與原型鏈

    摘要:每一個由構(gòu)造函數(shù)創(chuàng)建的對象都會默認(rèn)的連接到該神秘對象上。在構(gòu)造方法中也具有類似的功能,因此也稱其為類實例與對象實例一般是指某一個構(gòu)造函數(shù)創(chuàng)建出來的對象,我們稱為構(gòu)造函數(shù)的實例實例就是對象。表示該原型是與什么構(gòu)造函數(shù)聯(lián)系起來的。 本文您將看到以下內(nèi)容: 傳統(tǒng)構(gòu)造函數(shù)的問題 一些相關(guān)概念 認(rèn)識原型 構(gòu)造、原型、實例三角結(jié)構(gòu)圖 對象的原型鏈 函數(shù)的構(gòu)造函數(shù)Function 一句話說明什么...

    XBaron 評論0 收藏0
  • 進擊 JavaScript(五) 立即執(zhí)行函數(shù)與閉包

    摘要:匿名函數(shù)是不能單獨寫的,所以就提不上立即執(zhí)行了。六立即執(zhí)行函數(shù)在閉包中的應(yīng)用立即執(zhí)行函數(shù)能配合閉包保存狀態(tài)。來看下上節(jié)內(nèi)容中閉包的例子現(xiàn)在,我們來利用立即執(zhí)行函數(shù)來簡化它第一個匿名函數(shù)執(zhí)行完畢后,返回了第二個匿名函數(shù)。 前面的閉包中,提到與閉包相似的立即執(zhí)行函數(shù),感覺兩者還是比較容易弄混吧,嚴(yán)格來說(因為犀牛書和高程對閉包的定義不同),立即執(zhí)行函數(shù)并不屬于閉包,它不滿足閉包的三個條件。...

    vincent_xyb 評論0 收藏0

發(fā)表評論

0條評論

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