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

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

一道JavaScript面試題

一道JavaScript面試題

慕森卡 2019-03-13 13:15:07
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 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

閉包問題


執行了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,

下面同理


查看完整回答
反對 回復 2019-03-22
?
慕田峪9158850

TA貢獻1794條經驗 獲得超8個贊

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

查看完整回答
反對 回復 2019-03-22
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

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


查看完整回答
反對 回復 2019-03-22
  • 3 回答
  • 0 關注
  • 450 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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