1. 程式人生 > >js變數提升、函式提升詳解

js變數提升、函式提升詳解

一、變數提升是指將變數宣告提升到它所在作用域的最開始部分

  console.log(a)  // undefined
  var a = 1;
  console.log(a)  // 1

  為什麼會出現以上的結果,是因為js的變數提升,將a變數的宣告提升到全域性作用域的最上面部分,實際程式碼如下:

  var a;
  console.log(a)
  a = 1;
  console.log(a)

 

二、函式提升是指將函式宣告提升到它所在作用域的最開始部分

  備註:js建立函式有兩種方式,一種是函式宣告和函式表示式,只有函式宣告才存在函式提升

  var fn = function() {

    console.log('test')

  }

  function fn() {

    console.log('test1')
  }

  console.log(fn())  //  'test'
  
為什麼會出現以上結果,是因為js的變數提升,將函式宣告提到該函式作用的最上部分,實際程式碼如下:

  function fn() {

    console.log('test1')
  }

  var fn = function() {

    console.log('test')

  }

  console.log(fn())