JS 中的數(shù)據(jù)類型

????JS 是 一種 弱類型的動態(tài)語言甸饱,何為動態(tài)語言:運(yùn)行過程中需要檢查數(shù)據(jù)類型的語?稱為動態(tài)語言沦童;相對應(yīng)的?使用之前就需要確認(rèn)其變量數(shù)據(jù)類型的稱為靜態(tài)語言,比如 C叹话、JAVA偷遗。

? ? 1.?弱類型意味著你不需要告訴 JS 引擎這個或那個變量是什么數(shù)據(jù)類型,JS 引擎在運(yùn)?代 碼的時候自己會計(jì)算出來渣刷。?

? ? 2. 動態(tài)意味著你可以使?同?個變量保存不同類型的數(shù)據(jù)鹦肿。

????JavaScript 的數(shù)據(jù)類型分為:簡單數(shù)據(jù)類型值類型??復(fù)雜數(shù)據(jù)類型引用類型

? ??簡單數(shù)據(jù)類型:字符串(string),布爾(boolean)辅柴,數(shù)字(number)箩溃,undefined,null碌嘀,BigInt涣旨, Symbol

? ??復(fù)雜數(shù)據(jù)類型:對象(Object)


JS數(shù)據(jù)存儲機(jī)制

? ? 內(nèi)存空間

? ? ? ? JS 執(zhí)行過程種,主要有三種類型內(nèi)存空間股冗,分別是 代碼空間霹陡,棧空間 堆空間

1

? ? ? ? 椗朊蓿空間 和 堆空間

? ? ? ? ? ? 首先看一段代碼攒霹,分析其調(diào)用棧

2

? ? ? ? ? ? 當(dāng)代碼執(zhí)行完 前面兩行的時候,調(diào)用棧內(nèi)的情況浆洗,由于 a 和 b 是 值類型的 數(shù)據(jù)催束, 內(nèi)存開辟一個空間 存放 a? 和 b 的值。

簡單類型? ?

? ? ? ? 當(dāng)執(zhí)行到第三行 伏社,引用類型的值抠刺,調(diào)用棧情況又是如何:

值類型

? ? ? ? 引用類型的 數(shù)據(jù) 是放在 堆空間的椪空間只是 保存了對象的 引用地址速妖。JS 需要訪問該數(shù)據(jù)的時候,通過棧中的 應(yīng)用地址來訪問聪黎。

? ? ? ? 總結(jié): 1. 簡單類型的數(shù)據(jù)值都是直接保存在“椇比荩”中的,引用類型的值是存放在“堆”中挺举;

? ? ? ? ? ? ? ? ? ? 2. 簡單類型傳值杀赢,復(fù)雜類型(引用類型)傳址:簡單類型的賦值會完整復(fù)制變量值烘跺,復(fù)雜類型的賦值是復(fù)制引用地址湘纵。

? ???? ? 那么為什么不把所有的數(shù)據(jù)都存放到棧中呢?

? ? ? ? ? ? JS 引擎使用棧 來維護(hù)執(zhí)行上下文的狀態(tài)滤淳,如果所有的數(shù)據(jù)都存放在 椢嗯纾空間,導(dǎo)致棽备溃空間過大铺敌,會影響 上下文的切換效率,進(jìn)而影響整個程序的 執(zhí)行效率屁擅。比如勘伺,當(dāng)我們執(zhí)行完一個函數(shù)淑翼,只需要將 函數(shù)的執(zhí)行上下文彈出棧, 將 指針往 下移動到 上一個執(zhí)行上下文就可以了,函數(shù)的執(zhí)行上下文 會被回收逗栽。

? ? ? ? ? ? 所以 通常情況下,椩萘酰空間都不會 太大谈况,只要存放一些 簡單類型的小數(shù)據(jù),而 將 復(fù)雜類型的數(shù)據(jù) 放到 空間很大的 堆 空間早抠。

? ? ? ? 接下來

4

? ? ? ? d 的 賦值過程霎烙,指向了堆中的同一個地址,修改 c 的 值,d 也會改變悬垃。


再談閉包

閉包

? ? ? ? 1 當(dāng) JS 運(yùn)行到 foo 函數(shù)游昼,創(chuàng)建執(zhí)行上下文;

? ? ? ? 2 編譯中有 bar 函數(shù) 尝蠕,JS 引擎對 bar 做一次快速的詞法掃描酱床,發(fā)現(xiàn)該函數(shù)調(diào)用了 foo中的變量 a, 由于是 內(nèi)部函數(shù) 引用了外部函數(shù)的變量趟佃,所以 JS 引擎判斷這是 一個閉包扇谣,在堆 空間創(chuàng)造了一個 Closure(foo) 對象保存 a 變量。

? ? ? ? 當(dāng)執(zhí)行 foo 函數(shù)闲昭,閉包就產(chǎn)生了罐寨,foo 函數(shù)執(zhí)行完畢, 返回的 bar 函數(shù)用到了 closure(foo)對象序矩,所以 即使 foo 函數(shù)執(zhí)行結(jié)束鸯绿,closure(foo)依然被用到。在調(diào)用bar 函數(shù)的時候簸淀,創(chuàng)建的執(zhí)行上下文 就包含了?closure(foo)瓶蝴。

????總結(jié):產(chǎn)生閉包的核心有兩步:第一步是需要預(yù)掃描內(nèi)部函數(shù);第二步是把內(nèi)部函數(shù)引用的外部變量保 存到堆中租幕。


? ? 總結(jié)

? ? ? ? JS 8中數(shù)據(jù)類型分為兩大類: 值類型 和 引用類型舷手,值類型數(shù)據(jù)存放在 棧中,引用類型數(shù)據(jù)存放在 堆中劲绪;將一個 值類型的變量 a 賦值 給 b男窟,a 和 b 相互獨(dú)立,互不影響贾富;但是 引用類型 a 賦值給 b歉眷, 那么 它們指向同一個數(shù)據(jù), a 和 b 相互影響颤枪。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末汗捡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子畏纲,更是在濱河造成了極大的恐慌扇住,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霍骄,死亡現(xiàn)場離奇詭異台囱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)读整,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進(jìn)店門簿训,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事强品”煳辏” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵的榛,是天一觀的道長琼了。 經(jīng)常有香客問我,道長夫晌,這世上最難降的妖魔是什么雕薪? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮晓淀,結(jié)果婚禮上所袁,老公的妹妹穿的比我還像新娘。我一直安慰自己凶掰,他們只是感情好燥爷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懦窘,像睡著了一般前翎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上畅涂,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天港华,我揣著相機(jī)與錄音,去河邊找鬼毅戈。 笑死苹丸,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的苇经。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼宦言,長吁一口氣:“原來是場噩夢啊……” “哼扇单!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奠旺,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蜘澜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后响疚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鄙信,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年忿晕,在試婚紗的時候發(fā)現(xiàn)自己被綠了装诡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸦采,靈堂內(nèi)的尸體忽然破棺而出宾巍,到底是詐尸還是另有隱情,我是刑警寧澤渔伯,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布顶霞,位于F島的核電站,受9級特大地震影響锣吼,放射性物質(zhì)發(fā)生泄漏选浑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一玄叠、第九天 我趴在偏房一處隱蔽的房頂上張望鲜侥。 院中可真熱鬧,春花似錦诸典、人聲如沸描函。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舀寓。三九已至,卻和暖如春肌蜻,著一層夾襖步出監(jiān)牢的瞬間互墓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工蒋搜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篡撵,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓豆挽,卻偏偏與公主長得像育谬,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子帮哈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評論 2 355