明月笑刀無情
2018-08-01 23:29:01
var a = function (val, index) {console.log(index);return {
fn: function (name) {
return a(name, val);
}
}}var b = a(0); // underfinedb.fn(1); // 0b.fn(2); // 0b.fn(3); // 0
3 回答
蕭十郎
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
閉包問題
執(zhí)行了var b = a(0);,index沒有傳進(jìn)去,所以是underfined,同時(shí)會將val賦值為0,這個(gè)val不會被回收,因?yàn)榉祷氐膶ο笾幸昧诉@個(gè)參數(shù)
b = {
fn: function (name) {
return a(name, val);
}
}執(zhí)行b.fn(1);就是執(zhí)行a(1,0),這里index賦值為0,所以會打印0,
下面同理
紅顏莎娜
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
第一個(gè)underfined,因?yàn)閕ndex只聲明但是未賦值。
后面b繼承了a的fn方法。此時(shí)、index的值被fn函數(shù)賦值為val.也就是0。
所以后面三個(gè)都是打印0.
MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
var b = a(0)為underfined是因?yàn)橹唤oval賦值了,并沒有給index賦值,所以console.log(index)未定義,剩下的三個(gè)是因?yàn)閚ame為1、2、3,但是index卻賦值為0,所以與name為多少無關(guān),都會打印出0
添加回答
舉報(bào)
0/150
提交
取消
