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

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

閉包里返回的函數對應的arguments

閉包里返回的函數對應的arguments

哈士奇WWW 2018-11-22 14:14:13
js設計模式和開發實踐中的一個例子,var args = arguments 這一行中arguments對應的是哪個函數的arguments?為什么?打了斷點arguments是空的,只有一個Event,那為什么還在apply中傳入arguments?能不能詳細講解下,謝謝
查看完整描述

1 回答

?
瀟湘沐

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

arguments是function里特定的對象之一,指的是function的參數對象,按題意里的,當然對應的就是它所在的那一層function。即return function(){

這個可能讀起來有點繞,慢慢看,首先throttle是一個function,它被調用之后會返回一個function(就是題主提到的arguments所在的那個function,我們先叫他Afn吧)

為什么只有一個Event呢?(話說有Event了,arguments不能說是空吧)

https://img1.sycdn.imooc.com//5c286b0a000191be02590052.jpg

這得看到這里來,正常來說一個onresize綁定回調是這么個格式:

window.onresize = function(event){};

正好這里用的是throttle();它本身就返回一個function,對應的function(event){}

于是,前面我們說的Afn,在onresize觸發回調的時候是這么調用的Afn(event),參數是event對象。

至于為什么apply要傳入arguments?

因為這里延遲執行,我真正要調用的那個函數,跟我回調調用的函數Afn并不是同一個,參數不共用,所以要手動把我實際回調的函數的參數傳給我真正要調用的函數用。


查看完整回答
反對 回復 2018-12-30
  • 1 回答
  • 0 關注
  • 514 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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