Javascript數組Array的forEach方法

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

   若是咱們用console.log替換處理函數,將能夠獲得另外的有趣結果: [1,2,3,"csser"].forEach(console.log);數組

  結果:  瀏覽器

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

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

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

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

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

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

  而第二個參數表示上下文對象(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。

相關文章
相關標籤/搜索