美團js面試題

sensus森森發表於2017-07-30

該題難度係數: ★★★

考查的技術點:1). 作用域與作用域鏈 2). 變數查詢

這題分為兩小題,我們先看第一題:

var fn = function () {
    console.log(fn)
  }
  fn()

這題就是問我們呼叫fn後,結果是多少?

其實主要考查我們的作用域鏈的理解程度了,因為我們在函式fn裡面找不到fn相關的值,只能往外層查詢,然後在全域性作用域裡,我們找到了fn函式,屬於最後輸出的就是fn函式體結構了。

第二小題:

var obj = {
    fn2: function () {
      console.log(fn2)
    }
  }
  obj.fn2()
這題一執行就報錯了,如圖:

為什麼會報錯呢?我們來分析下,obj.fn2函式裡面找不到f2,所以我們繼續往外層找,在全域性作用域裡面我們依然找不到f2,因為f2也沒有被事先宣告,所以就報錯了,注意f2在obj裡面的,是找不到的,若想輸出fn2屬性的值,可以這樣寫即可

  var obj = {
    fn2: function () {
      // 想輸出fn2屬性的值
      console.log(this.fn2) // obj.fn2也行, 但比較死板
    }
  }

結果如下:




相關文章