前篇文提到的是創造環境,而此處要講的是執行時的情況。
在JavaScript跑程式碼時:
第1階段創造:JS設定變數和函數到記憶體中
第2階段執行:創造階段已經設定好所有的東西,現在執行你已經寫好的程式碼逐行編譯、轉換成電腦懂的東西。
創造:跑到2宣告了a,a已存在於記憶體中,系統先給了預設值defined,因為還沒有開始執行,所以不知道a的值,要執行時才會知道。執行:跑到1時-預設a值是undefined
跑到2時-將123填入a取代undefined,現在a是123
跑到3時-將a=123代入1. console.log(a); // undefined 2. var a = 123; 3. console.log(a); //123
_____就是個普通的例子別理它function b() {
console.log(“hello”);} //hello,
b();
_____一般我們知道的not defined,從頭到尾沒被賦值,記憶體中根本不存在。console.log(c) // not defined
簡單而言,創造階段時依有沒有被宣告,決定是undefined還是not defined,執行階段將值填入undefined。
console.log(d);//undefined
var d;
console.log(d);//undefined*無論var d寫在哪,宣告過後未賦值的話console.log都是undefined