Javascript數組Array的forEach方法


  Javascript數組Array的forEach擴展方法 forEach是最常用到的數組擴展方法之一,相當於參數化循環數組,它簡單的在數組的每一個元素上應用傳入的函數,這也意味着只有存在的元素會被訪問和處理。

   如果我們用console.log替換處理函數,將可以得到另外的有趣結果: [1,2,3,"csser"].forEach(console.log);

  結果:  

  1, 0, Array[1, 2, 3, "csser"]

  2, 1, Array[1, 2, 3, "csser"]

  3, 2, Array[1, 2, 3, "csser"]

  csser, 3, Array[1, 2, 3, "csser"]

  這里forEach函數每次調用console.log時會傳入3個參數。顯而易見,這3個參數分別是:當前項、當前項索引和數組本身,

  forEach是一個基本的數組高階(higher-order)方法,其語法定義為: array.forEach(callback[, thisObject]) 第一個參數我們已經知道了,它是一個擁有3個參數的函數,該函數將應用於數組的每一項。

  而第二個參數表示上下文對象(context object)或者this值,用於指向回調函數的this引用。這有時會挺有用,比如當我們想使用某個對象的方法作為forEach的處理函數時: 

  var database = {
    users: ["CSSer", "John", "David"],
    sendEmail: function (user) {
      if (this.isValidUser(user)) {          /* 發送消息 */       }     },     isValidUser: function (user) {        /* 驗證代碼 */ }     }; // 向每個用戶發送郵件 database.users.forEach(database.sendEmail,database);

  簡單分析下,在sendMail函數內部的this指向database對象,並且this.isValidUser指向必須的函數,如果我們不傳入第二個參數,this值會被默認指向全局對象(在瀏覽器中是window)或者在strict模式下指向undefined。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM