深入JavaScript Day02 - 深入了解JavaScript執(zhí)行過程转培、GO淹魄、執(zhí)行棧、執(zhí)行上下文堡距、函數(shù)作用域、內(nèi)存管理兆蕉、垃圾回收機制羽戒、GC算法

一、深入了解JavaScript執(zhí)行過程(從具體代碼的角度)

1虎韵、為什么我們在JavaScript代碼中易稠,能直接使用window、setTimeout包蓝、console驶社、math等等對象或函數(shù)呢企量?

  • 【前提】JavaScript執(zhí)行所以代碼都是有執(zhí)行上下文環(huán)境的
  • 在全局上下文創(chuàng)建的時候,會創(chuàng)建一個GlobalObject(GO)亡电,里面就會注入我們經(jīng)常見到的window届巩、math、console等等函數(shù)或?qū)ο?/li>
// 示例代碼
var name = "why"
var num1 = 20
var num2 = 30
var result = num1 + num2

// GO的偽代碼(創(chuàng)建時間點份乒,也就是全局執(zhí)行上下文創(chuàng)建的時候)
var globalObject {
  String:"類",
  Date:"類",
  setTimeout:"函數(shù)",
  name: undefined,
  num1:undefined,
  num2:undefined,
  result:undefined
}
image.png

2恕汇、觀察下面的代碼,先 console.log(num1)var num1 = 20或辖,結(jié)果輸出是什么瘾英?為什么?

      var name = "why";
      console.log(num1);
      var num1 = 20;
      var num2 = 30;
      var result = num1 + num2;
  • 【輸出】undefined
  • 【原因】①在創(chuàng)建上下文時候颂暇,GO會將var的對象放到了window屬性中缺谴,只是值是undefined ②在執(zhí)行上下文的時候,執(zhí)行到 var num1 = 20才會被賦值耳鸯。

3湿蛔、下面代碼,先調(diào)用函數(shù)片拍,再定義函數(shù)煌集,為什么不會報錯?

      var name = "why";
      foo();
      function foo() {
        console.log("foo");
      }
  • 【原因】①在創(chuàng)建上下文時候捌省,GO會將函數(shù)放到了window屬性中苫纤,值是函數(shù)地址foo: 0xa00 ②在執(zhí)行上下文的時候,執(zhí)行到 foo(); 時纲缓,拿到函數(shù)地址卷拘,進行執(zhí)行

4、思考下面代碼的輸出祝高?為什么會這樣栗弟?

      var message = "Hello Global";
      function foo() {
        console.log(message);
      }

      function bar() {
        var message = "Hello Bar";
        foo();
      }
      bar();
  • 【輸出】Hello Global
  • 因為函數(shù)的【parent scope父級作用域】在函數(shù)定義的時候確定的,與函數(shù)的調(diào)用無關
image.png

5工闺、一些經(jīng)典題目練習乍赫,對上面的知識的鞏固

image.png
  • 【注意】對于 b=100 這種代碼,其實是未定義b陆蟆,直接使用b雷厂,js做了特殊處理,把b當成全局屬性了叠殷。不推薦這樣寫代碼改鲫,屬于特例。

二、內(nèi)存管理

1像棘、說說你對編程語言的內(nèi)存管理的認識稽亏?現(xiàn)在高級語言對內(nèi)存管理主要有哪兩大方式?

  • 【不管什么樣的編程語言缕题,在代碼的執(zhí)行過程中都是需要給它分配內(nèi)存的】
  • 【不同的是某些編程語言需要我們自己手動的管理內(nèi)存截歉,某些編程語言會可以自動幫助我們管理內(nèi)存】
image.png

2、JavaScript對基本數(shù)據(jù)類型和復雜數(shù)據(jù)類型避除,分配內(nèi)存的方式有什么不同怎披?

image.png

-【備注】好像沒法打印出JavaScript中變量的內(nèi)存地址。

3瓶摆、為什么要釋放內(nèi)存凉逛?什么是垃圾回收機制?

  • 【因為內(nèi)存的大小是有限的群井,所以當內(nèi)存不再需要的時候状飞,我們需要對其進行釋放】
image.png

4、常見的兩種GC算法是哪兩種书斜?

  • 【引用計數(shù)器方案】:這個算法有一個很大的弊端就是可能會產(chǎn)生循環(huán)引用問題
  • 【標記清除方案】:這個算法可以很好地解決循環(huán)引用的問題
image.png
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诬辈,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子荐吉,更是在濱河造成了極大的恐慌焙糟,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件样屠,死亡現(xiàn)場離奇詭異穿撮,居然都是意外死亡,警方通過查閱死者的電腦和手機痪欲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門悦穿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人业踢,你說我怎么就攤上這事栗柒。” “怎么了知举?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵瞬沦,是天一觀的道長。 經(jīng)常有香客問我雇锡,道長蛙埂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任遮糖,我火速辦了婚禮,結(jié)果婚禮上叠赐,老公的妹妹穿的比我還像新娘欲账。我一直安慰自己屡江,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布赛不。 她就那樣靜靜地躺著惩嘉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪踢故。 梳的紋絲不亂的頭發(fā)上文黎,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音殿较,去河邊找鬼耸峭。 笑死,一個胖子當著我的面吹牛淋纲,可吹牛的內(nèi)容都是我干的劳闹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼洽瞬,長吁一口氣:“原來是場噩夢啊……” “哼本涕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伙窃,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤菩颖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后为障,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦闰,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年产场,在試婚紗的時候發(fā)現(xiàn)自己被綠了鹅髓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡京景,死狀恐怖窿冯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情确徙,我是刑警寧澤醒串,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站鄙皇,受9級特大地震影響芜赌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜伴逸,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一缠沈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦洲愤、人聲如沸颓芭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亡问。三九已至,卻和暖如春肛宋,著一層夾襖步出監(jiān)牢的瞬間州藕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工酝陈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留床玻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓后添,卻偏偏與公主長得像笨枯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子遇西,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容