js 面試題總結 3
阿新 • • 發佈:2018-11-10
1 console.log(a); // undefined 2 var a = 12; // 12 3 function fn() { 4 console.log(a); // undefined 5 var a = 13; // 13 6 } 7 fn(); 8 console.log(a); // 12
- 建立全域性作用域;
- 變數提升,宣告一個 a 變數、定義一個函式 fn;
- 執行程式碼;( 變數 a 已提升但未賦值,所以 a = undefined,輸出 a 值為 undefined,設定 全域性變數 a = 12 )
- 執行 fn,形成一個私有作用域 fn ;
- 私有作用域中的執行過程為:
1)形式引數賦值。沒有形式引數;
2)變數提升。提升變數 a ;(私有作用域中,如果定義了變數,那麼所有的相同變數名都是同一個)
3)執行程式碼。區域性變數 a已提升還未賦值,所以是 undefined,輸出 a 值為 undefined,設定區域性變數 a = 13 ; - 輸出全域性變數 a 值 為 12;
1 console.log(a); // undefined 2 var a = 12; // 12 3 function fn() { 4 console.log(a); // 12 5 a=13; // 13 6 } 7 fn(); 8 console.log(a); // 13
9 // 結果為 undefined 、12 、13
1 console.log(a); // a is not defined 2 3 a=12; 4 function fn() { 5 console.log(a);6 a = 13; 7 } 8 fn(); 9 console.log(a); 10 // a is not defined