鍍金池/ 問(wèn)答/HTML/ 輸出為什么是2。

輸出為什么是2。

似乎與閉包有關(guān),求講解。

function test() {
    var num = 1;
    var t2 = function() { console.log(num); }
    num++;
    return t2;
}
var t=test();
t();
回答
編輯回答
夏木

是的,閉包問(wèn)題

t函數(shù)的功能是打印num,這個(gè)num的上下文是test函數(shù),注意,不是window,因?yàn)閠所指向的函數(shù)是在test函數(shù)內(nèi)部創(chuàng)建的,test內(nèi)部的num初始值為1,后經(jīng)過(guò)一次運(yùn)算變成2,所以之后運(yùn)行t函數(shù)的時(shí)候,所打印的就是2

2018年3月26日 22:03
編輯回答
默念

閉包的意思就是雖然是在外面執(zhí)行,但執(zhí)行環(huán)境仍然是定義它的地方。所以外面的t()實(shí)際上相當(dāng)于在return t2;這一句的位置上執(zhí)行的。結(jié)果是什么是不是一眼就看出來(lái)了。

2017年3月9日 22:37