[JavaScriptWeird]No.5 執行環境:程式執行

前言

還記得我們說到執行環境有兩個階段,第一個階段是「創造」,這會設定變數與函式到記憶體中。這篇文章主要是介紹第二個階段「程式執行 (Code Execution)」

程式執行 (Code Execution)

在創造階段時,我們已經設定好所有的東西了,而這個階段就是關於「我們寫好的程式碼」將被逐行的編譯、轉換成電腦懂的東西。

克服 JS 奇怪部分 截圖

回到提升 ( hoisting) 的例子,調整一下:

1
2
3
4
5
6
7
function b(){  
console.log('called b');
}
b();
console.log(a);
var a = 'hello';
console.log(a);

這樣子會印出什麼呢 ?

如我們前面學到的觀念,因為現在是程式執行階段,函式 b 被呼叫印出 called b ,接著印出在變數 a 於創造階段設定的 undefined ,執行到 var a = 'hello' 時將記憶體中 a 的值設定為 hello 字串,最後執行 console.log(a); 印出變數 a 的值。

後記:

這一篇文章比較短,不過透過這一篇的範例我們可以知道, JavaScript 中程式碼確實是逐行被編譯的。

至此,執行環境的兩個階段已經講解完了,自己算是對 JavaScript 的前世今生也有一點點眉目了,但 JavaScript 仍然有很多奇怪的地方需要克服,勉勵自己繼續加油。

0%