1. 變數聲明提升 / 變數提升
-- 通過var定義(聲明)的變數,在定義語句之前就可以訪問到
-- 值:undefined
2. 函數聲明提升 / 函數提升
-- 通過function聲明的函數,在之前就可以直接調用
-- 值:函數定義(對象)

 

<script type="text/javascript">

  // 面試:a輸出多少?undefined / 4

  var a = 3;
  function fn() {
    console.log(a);   // undefined
    var a = 4;
    console.log(a);   // 4
    /*
    函數實際執行的流程
    var = a;
    console.log(a);
    a = 4;
     */
  }
  fn();

  console.log(b);   // undefined --> 變數提升
  var b = 5;
  /*
  實際流程
  var b;
  console.log(b);
  b = 5
   */
  fn2();  // 可以調用,輸出為fn2() --> 涵數提升
 // fn3();  // 不可以調用 --> 變數提升

  function fn2() {
    console.log('fn2()');
  }

  var fn3 = function () {
    console.log('fn3()');
  }

</script>

 

bingzhichen 發表在 痞客邦 留言(0) 人氣()