基本類(lèi)型值和引用類(lèi)型值 內(nèi)存

基本類(lèi)型的值源自以下 5種基本數(shù)據(jù)類(lèi)型:Undefined斤葱、Null赫蛇、Boolean召廷、Number 和 String凳厢。還有 1種復(fù)雜數(shù)據(jù)類(lèi)型(引用類(lèi)型)——Object,Object 本質(zhì)上是由一組無(wú)序的名值對(duì)組成的竞慢。

基本類(lèi)型的數(shù)據(jù)是存放在棧內(nèi)存中的先紫,而引用類(lèi)型的數(shù)據(jù)是存放在堆內(nèi)存中的

值類(lèi)型:數(shù)值、布爾值筹煮、null遮精、undefined。

基本類(lèi)型的復(fù)制就是在棧內(nèi)存中開(kāi)辟出了一個(gè)新的存儲(chǔ)區(qū)域用來(lái)存儲(chǔ)新的變量败潦,這個(gè)變量有它自己的值,如果其中一個(gè)的值改變本冲,則不會(huì)影響到另一個(gè)准脂。任何方法都無(wú)法改變一個(gè)基本類(lèi)型的值,除非對(duì)此變量重新賦值。

引用類(lèi)型:對(duì)象眼俊、數(shù)組意狠、函數(shù)粟关。

當(dāng)從一個(gè)變量向另一個(gè)變量賦值引用類(lèi)型的值時(shí)疮胖,同樣也會(huì)將存儲(chǔ)在變量中的對(duì)象的值復(fù)制一份放到為新變量分配的空間中。前面講引用類(lèi)型的時(shí)候提到闷板,
保存在變量中的是對(duì)象在堆內(nèi)存中的地址澎灸,所以,與簡(jiǎn)單賦值不同遮晚,這個(gè)值的副本實(shí)際上是一個(gè)指針性昭,而這個(gè)指針指向存儲(chǔ)在堆內(nèi)存的一個(gè)對(duì)象。那么賦值操作后县遣,
兩個(gè)變量都保存了同一個(gè)對(duì)象地址糜颠,則這兩個(gè)變量指向了同一個(gè)對(duì)象。因此萧求,改變其中任何一個(gè)變量其兴,都會(huì)相互影響

基本類(lèi)型值和引用類(lèi)型值具有以下特點(diǎn):

? 基本類(lèi)型值在內(nèi)存中占據(jù)固定大小的空間,因此被保存在棧內(nèi)存中夸政;
? 從一個(gè)變量向另一個(gè)變量復(fù)制基本類(lèi)型的值元旬,會(huì)創(chuàng)建這個(gè)值的一個(gè)副本;
? 引用類(lèi)型的值是對(duì)象守问,保存在堆內(nèi)存中匀归;
? 包含引用類(lèi)型值的變量實(shí)際上包含的并不是對(duì)象本身,而是一個(gè)指向該對(duì)象的指針耗帕;
? 從一個(gè)變量向另一個(gè)變量復(fù)制引用類(lèi)型的值穆端,復(fù)制的其實(shí)是指針,因此兩個(gè)變量最終都指向同
一個(gè)對(duì)象仿便;
? 確定一個(gè)值是哪種基本類(lèi)型可以使用 typeof 操作符体啰,而確定一個(gè)值是哪種引用類(lèi)型可以使用
instanceof 操作符。
所有變量(包括基本類(lèi)型和引用類(lèi)型)都存在于一個(gè)執(zhí)行環(huán)境(也稱(chēng)為作用域)當(dāng)中探越,這個(gè)執(zhí)
行環(huán)境決定了變量的生命周期狡赐,以及哪一部分代碼可以訪問(wèn)其中的變量。以下是關(guān)于執(zhí)行環(huán)境的幾
點(diǎn)總結(jié):
? 執(zhí)行環(huán)境有全局執(zhí)行環(huán)境(也稱(chēng)為全局環(huán)境)和函數(shù)執(zhí)行環(huán)境之分钦幔;
? 每次進(jìn)入一個(gè)新執(zhí)行環(huán)境枕屉,都會(huì)創(chuàng)建一個(gè)用于搜索變量和函數(shù)的作用域鏈;
? 函數(shù)的局部環(huán)境不僅有權(quán)訪問(wèn)函數(shù)作用域中的變量鲤氢,而且有權(quán)訪問(wèn)其包含(父)環(huán)境搀擂,乃至全
局環(huán)境西潘;
? 全局環(huán)境只能訪問(wèn)在全局環(huán)境中定義的變量和函數(shù),而不能直接訪問(wèn)局部環(huán)境中的任何數(shù)據(jù)哨颂;
? 變量的執(zhí)行環(huán)境有助于確定應(yīng)該何時(shí)釋放內(nèi)存喷市。
JavaScript 是一門(mén)具有自動(dòng)垃圾收集機(jī)制的編程語(yǔ)言,開(kāi)發(fā)人員不必關(guān)心內(nèi)存分配和回收問(wèn)題威恼∑沸眨可
以對(duì) JavaScript 的垃圾收集例程作如下總結(jié)。
? 離開(kāi)作用域的值將被自動(dòng)標(biāo)記為可以回收箫措,因此將在垃圾收集期間被刪除腹备。
? “標(biāo)記清除”是目前主流的垃圾收集算法,這種算法的思想是給當(dāng)前不使用的值加上標(biāo)記斤蔓,然
后再回收其內(nèi)存植酥。
? 另一種垃圾收集算法是“引用計(jì)數(shù)”,這種算法的思想是跟蹤記錄所有值被引用的次數(shù)弦牡。JavaScript
引擎目前都不再使用這種算法友驮;但在 IE 中訪問(wèn)非原生 JavaScript 對(duì)象(如 DOM 元素)時(shí),這種
算法仍然可能會(huì)導(dǎo)致問(wèn)題驾锰。
? 當(dāng)代碼中存在循環(huán)引用現(xiàn)象時(shí)卸留,“引用計(jì)數(shù)”算法就會(huì)導(dǎo)致問(wèn)題。
? 解除變量的引用不僅有助于消除循環(huán)引用現(xiàn)象稻据,而且對(duì)垃圾收集也有好處艾猜。為了確保有效地回
收內(nèi)存,應(yīng)該及時(shí)解除不再使用的全局對(duì)象捻悯、全局對(duì)象屬性以及循環(huán)引用變量的引用匆赃。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市今缚,隨后出現(xiàn)的幾起案子算柳,更是在濱河造成了極大的恐慌,老刑警劉巖姓言,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件瞬项,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡何荚,警方通過(guò)查閱死者的電腦和手機(jī)囱淋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)餐塘,“玉大人妥衣,你說(shuō)我怎么就攤上這事。” “怎么了税手?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蜂筹,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我芦倒,道長(zhǎng)艺挪,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任兵扬,我火速辦了婚禮麻裳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘周霉。我一直安慰自己掂器,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布俱箱。 她就那樣靜靜地躺著,像睡著了一般灭必。 火紅的嫁衣襯著肌膚如雪狞谱。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天禁漓,我揣著相機(jī)與錄音跟衅,去河邊找鬼。 笑死播歼,一個(gè)胖子當(dāng)著我的面吹牛伶跷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播秘狞,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼叭莫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了烁试?” 一聲冷哼從身側(cè)響起雇初,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎减响,沒(méi)想到半個(gè)月后靖诗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡支示,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年刊橘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颂鸿。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡促绵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情绞愚,我是刑警寧澤叙甸,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站位衩,受9級(jí)特大地震影響裆蒸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜糖驴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一僚祷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贮缕,春花似錦辙谜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至定嗓,卻和暖如春蜕琴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宵溅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工凌简, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人恃逻。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓雏搂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親寇损。 傳聞我的和親對(duì)象是個(gè)殘疾皇子凸郑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355