<address id="ttjl9"></address>

      <noframes id="ttjl9"><address id="ttjl9"><nobr id="ttjl9"></nobr></address>
      <form id="ttjl9"></form>
        <em id="ttjl9"><span id="ttjl9"></span></em>
        <address id="ttjl9"></address>

          <noframes id="ttjl9"><form id="ttjl9"></form>

          js 徹底理解回調函數

          2021-4-26    前端達人

          一、前奏

          在談回調函數之前,先看下下面兩段代碼:
          不妨猜測一下代碼的結果。

          function say (value) {
              alert(value);
          } alert(say); alert(say('hi js.')); 
          
          • 1
          • 2
          • 3
          • 4
          • 5

          如果你測試了,就會發現:

          只寫變量名 say 返回的將會是 say方法本身,以字符串的形式表現出來。
          而在變量名后加()如say()返回的就會使say方法調用后的結果,這里是彈出value的值。 
          
          • 1
          • 2

          二、js中函數可以作為參數傳遞

          再看下面的兩段代碼:

          function say (value) { alert(value);
          } function execute (someFunction, value) { someFunction(value);
          }
          execute(say, 'hi js.'); 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7

          function execute (someFunction, value) { someFunction(value);
          }
          execute(function(value){alert(value);}, 'hi js.'); 
          
          • 1
          • 2
          • 3
          • 4

          上面第一段代碼是將say方法作為參數傳遞給execute方法
          第二段代碼則是直接將匿名函數作為參數傳遞給execute方法

          實際上:

          function say (value) { alert(value);
          } // 注意看下面,直接寫say方法的方法名與下面的匿名函數可以認為是一個東西 // 這樣再看上面兩段代碼是不是對函數可以作為參數傳遞就更加清晰了 say; function (value) { alert(value);
          } 
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          這里的say或者匿名函數就被稱為回調函數。  
          
          • 1

          三、回調函數易混淆點——傳參

          如果回調函數需要傳參,如何做到,這里介紹兩種解決方案。

          • 將回調函數的參數作為與回調函數同等級的參數進行傳遞


          • 回調函數的參數在調用回調函數內部創建


          四、寫在最后

          回調函數應用場景多用在使用 js 寫組件時,尤其是組件的事件很多都需要回調函數的支持。

          轉自:csdn 作者:dkvirus


          藍藍設計www.syprn.cn )是一家專注而深入的界面設計公司,為期望卓越的國內外企業提供卓越的UI界面設計、BS界面設計 、 cs界面設計 、 ipad界面設計 、 包裝設計 、 圖標定制 、 用戶體驗 、交互設計、 網站建設 、平面設計服務


          日歷

          鏈接

          個人資料

          藍藍設計的小編 http://www.syprn.cn

          存檔

          亚洲va欧美va天堂v国产综合