1. 程式人生 > >js 面試題總結 3

js 面試題總結 3

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
  1. 建立全域性作用域;
  2. 變數提升,宣告一個 a 變數、定義一個函式 fn;
  3. 執行程式碼;( 變數 a 已提升但未賦值,所以 a = undefined,輸出 a 值為 undefined,設定 全域性變數 a = 12 )
  4. 執行 fn,形成一個私有作用域 fn ;
  5. 私有作用域中的執行過程為:
    1)形式引數賦值。沒有形式引數;
    2)變數提升。提升變數 a ;(私有作用域中,如果定義了變數,那麼所有的相同變數名都是同一個)
    3)執行程式碼。區域性變數 a已提升還未賦值,所以是 undefined,輸出 a 值為 undefined,設定區域性變數 a = 13 ;
  6. 輸出全域性變數 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