国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

進擊的 JavaScript(二) 之 數據結構

BlackFlagBin / 607人閱讀

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

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

js 不同其他編程語言,它是腳本語言。所以,它的數據結構嚴格意義上是不存在的,但是還是可以簡單的歸納為三種結構,分別為 堆、棧、隊列。

一、棧(stack)

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

二、堆(heap)

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

三、隊列(queue)

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

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

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

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

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

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

基本類型的復制

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

console.log(num2);    //566

基本類型的比較

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

引用類型:對象,數組。

它們的數據就存放在 堆內存(heap)中,大小不一定,動態分配內存,可隨時修改。

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

引用類型的復制

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
總結:復制 或 比較 都是操作變量保存的值,但基礎類型的變量保存數據,而引用類型的變量保存的是數據對應的地址。

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

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110141.html

相關文章

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

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

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

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

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

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

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

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

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

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

    vincent_xyb 評論0 收藏0

發表評論

0條評論

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