亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道JavaScript面試題

一道JavaScript面試題

明月笑刀無情 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貢獻1815條經驗 獲得超13個贊

閉包問題

執行了var b = a(0);,index沒有傳進去,所以是underfined,同時會將val賦值為0,這個val不會被回收,因為返回的對象中引用了這個參數

b = {
    fn: function (name) {        
        return a(name, val);
    }
}

執行b.fn(1);就是執行a(1,0),這里index賦值為0,所以會打印0,
下面同理


查看完整回答
2 反對 回復 2018-08-05
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

第一個underfined,因為index只聲明但是未賦值。
后面b繼承了a的fn方法。此時、index的值被fn函數賦值為val.也就是0。
所以后面三個都是打印0.

查看完整回答
反對 回復 2018-08-05
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

var b = a(0)為underfined是因為只給val賦值了,并沒有給index賦值,所以console.log(index)未定義,剩下的三個是因為name為1、2、3,但是index卻賦值為0,所以與name為多少無關,都會打印出0

查看完整回答
反對 回復 2018-08-05
  • 3 回答
  • 0 關注
  • 1195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號