摘要:的垃圾回收器,進行回收。它們的數(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ǔ)。
基本類型: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
引用類型:對象,數(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
摘要:一作用域域表示的就是范圍,即作用域,就是一個名字在什么地方可以使用,什么時候不能使用。概括的說作用域就是一套設(shè)計良好的規(guī)則來存儲變量,并且之后可以方便地找到這些變量。 一、作用域 域表示的就是范圍,即作用域,就是一個名字在什么地方可以使用,什么時候不能使用。想了解更多關(guān)于作用域的問題推薦閱讀《你不知道的JavaScript上卷》第一章(或第一部分),從編譯原理的角度說明什么是作用域。概...
摘要:如下代碼輸出的結(jié)果是代碼執(zhí)行分為兩個大步預(yù)解析的過程代碼的執(zhí)行過程預(yù)解析與變量聲明提升程序在執(zhí)行過程中,會先將代碼讀取到內(nèi)存中檢查,會將所有的聲明在此進行標(biāo)記,所謂的標(biāo)記就是讓解析器知道有這個名字,后面在使用名字的時候不會出現(xiàn)未定義的錯誤。 showImg(https://segmentfault.com/img/remote/1460000012922850); 如下代碼輸出的結(jié)果是...
摘要:為了更好的理解,在閱讀此文之前建議先閱讀上一篇進擊之詞法作用域與作用域鏈?zhǔn)裁词情]包閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結(jié)構(gòu)。在中函數(shù)構(gòu)成閉包。 為了更好的理解,在閱讀此文之前建議先閱讀上一篇《進擊JavaScript之詞法作用域與作用域鏈》 1.什么是閉包 閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結(jié)構(gòu)。所謂的閉包就是...
摘要:每一個由構(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 一句話說明什么...
摘要:匿名函數(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ù)并不屬于閉包,它不滿足閉包的三個條件。...
閱讀 3812·2021-10-13 09:40
閱讀 3262·2021-10-09 09:53
閱讀 3638·2021-09-26 09:46
閱讀 1925·2021-09-08 09:36
閱讀 4351·2021-09-02 09:46
閱讀 1372·2019-08-30 15:54
閱讀 3246·2019-08-30 15:44
閱讀 1090·2019-08-30 11:06