js執行環境的理解

var compose=function(a,b){
    return function(){
        return a+b
    }
}
var g=1
var h=1
var f=compose(g,h)
console.log(f)    // function () {return a + b;}
console.log(f())  // 2
  • Q:第一個打印的結果不是function () { return 3};函數

  • A:當調用compose時,建立了一個執行環境E1,該執行環境中,有a=1,b=1;此時的環境至關於:code

a=1,b=1;
function(){return a+b}

由於返回的函數沒有當即在compose內調用,因此a=1,b=1沒有傳入函數中io

  • Q:第二個打印結果是 2?console

  • A:f();調用function(){return a+b},建立這個匿名函數的環境E2,先在這個環境中找a,b.可是沒有。進入它的上級環境,是E1,E1環境中有a=1,b=1。因此結果是2.function

相關文章
相關標籤/搜索