變量對象

  • 過程:創建arguments-檢查function聲明創建屬性-檢查var聲明創建屬性
  • 函數聲明以及var聲明的變量對象會發生變量提升,提升到該作用域的最上方

例子(變量提升)

   function test() {
     console.log(a);
     console.log(foo());
     var a = 1;
     function foo() {
         return 2;
     }
  }
  test(); // undefined 1
  • 正確執行順序
  function test() {
   function foo() {
       return 2;
   }
   var a;
   console.log(a);
   console.log(foo());
   a = 1;
  }
  test();