最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript基礎(chǔ)之Array?forEach使用示例

 更新時(shí)間:2022年12月21日 12:00:10   作者:云層上的光  
這篇文章主要為大家介紹了JavaScript基礎(chǔ)之Array?forEach使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

forEach() 方法對(duì)數(shù)組的每個(gè)元素執(zhí)行一次給定的函數(shù)。

回調(diào)函數(shù)中傳遞三個(gè)參數(shù):

  • 第一個(gè)參數(shù),就是當(dāng)前正在遍歷的元素
  • 第二個(gè)參數(shù),就是當(dāng)前正在遍歷的元素的索引
  • 第三個(gè)參數(shù),就是正在遍歷的數(shù)組

嘗試一下

var list = ["云層上的光", "初心", "欒樹"];
list.forEach(function(item, index, array){
    console.log(item,index,array)
});

輸出內(nèi)容如下:

那我就好奇了,在forEach回調(diào)函數(shù)中的this指向誰呢?forEach函數(shù)是否有返回值

var list = ["云層上的光", "初心", "欒樹"];
var value = list.forEach(function(item, index, array){
    console.log(this);
});
console.log(value);

可以看到 this指向 window并且forEach沒有返回值,返回值為 undefined

那我們可以更改this指向嗎?

forEach其實(shí)接受兩個(gè)參數(shù),第二個(gè)參數(shù) 可選參數(shù)。當(dāng)執(zhí)行回調(diào)函數(shù)時(shí),用作 this 的值。

forEach實(shí)現(xiàn)

Array.prototype.myForEach = function (callback) {
  var _arr    = this,// 調(diào)用時(shí)誰 this就是誰
      _len    = _arr.length,
      thisArg = arguments[1] || window;
  // 校驗(yàn)callback之能是 function時(shí)才往下執(zhí)行
  if (typeof callback !== 'function') {
    throw new Error(`${callback} is not a function`);
  }
  // for循環(huán)
  for (var i = 0; i < _len; i++) {
    callback.apply(thisArg, [_arr[i], i, _arr]);
  }
  // 注意 forEach 沒有返回值
}

對(duì)象模仿數(shù)組

對(duì)象的原型上并沒有 forEach,所以我們調(diào)用 Array.prototype.forEach方法通過call改變方法內(nèi)部的this指向,myForEach內(nèi)部循環(huán)需要length, 所以我們在對(duì)象中模擬了添加了一個(gè)length屬性,對(duì)象的key 分別為 0,1,2 分別對(duì)應(yīng)了循序中的下標(biāo)。

const arrayLike = {
  length: 3,
  0: 2,
  1: 3,
  2: 4,
};
Array.prototype.forEach.call(arrayLike, (x) => console.log(x));

forEach跳出循環(huán)體?

forEach可以跳出循環(huán)體嗎?其實(shí) returnbreak 是無法做到的,不過可以使用 throw new Error

var list = ["云層上的光", "初心", "欒樹"];
try{
    list.forEach(item=&gt;{
        if(item === "初心") throw new Error("初心");
    })
}catch(err){
    if(err.message === "初心")	
        console.log("在執(zhí)行到初心時(shí)跳出循環(huán)體了")
    else 
        console.error(err)
}

以上就是JavaScript基礎(chǔ)之Array forEach使用示例的詳細(xì)內(nèi)容,更多關(guān)于JavaScript Array forEach的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 有關(guān)于JS輔助函數(shù)inherit()的問題

    有關(guān)于JS輔助函數(shù)inherit()的問題

    本篇為大家介紹有關(guān)于JS輔助函數(shù)inherit()的一些問題。
    2013-04-04
  • javascript typeof id===''string''?document.getElementById(id):id解釋

    javascript typeof id===''string''?document.getElementById(id

    剛開始學(xué)習(xí)js的朋友可能會(huì)有些疑問,其實(shí)這段代碼使用js的三元運(yùn)算符,這樣代碼看起來高大上,最主要是代碼段少
    2016-11-11
  • 詳解JavaScript中void語句的使用

    詳解JavaScript中void語句的使用

    這篇文章主要介紹了詳解JavaScript中void語句的使用,是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • javascript的 {} 語句塊詳解

    javascript的 {} 語句塊詳解

    這篇文章主要介紹了javascript的 {} 語句塊詳解的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 淺談JavaScript Date日期和時(shí)間對(duì)象

    淺談JavaScript Date日期和時(shí)間對(duì)象

    這篇文章主要介紹了JavaScript Date日期和時(shí)間對(duì)象的相關(guān)資料,需要的朋友可以參考下
    2014-12-12
  • 簡單了解JavaScript異步

    簡單了解JavaScript異步

    所謂"異步",簡單說就是一個(gè)任務(wù)分成兩段,先執(zhí)行第一段,然后轉(zhuǎn)而執(zhí)行其他任務(wù),等做好了準(zhǔn)備,再回過頭執(zhí)行第二段。比如,有一個(gè)任務(wù)是讀取文件進(jìn)行處理,下面小編來和大家一起學(xué)習(xí)一下
    2019-05-05
  • JS中的this變量的使用介紹

    JS中的this變量的使用介紹

    在JavaScript中this變量是一個(gè)令人難以摸清的關(guān)鍵字,this可謂是非常強(qiáng)大,在本文將為大家詳細(xì)介紹下JavaScript中this的使用,感興趣的朋友可以參考下
    2013-10-10
  • javaScript中

    javaScript中"=="和"==="的區(qū)別詳解

    對(duì)于JavaScript中比較運(yùn)算符,可能大家用的比較多的是“==”、對(duì)于“===”很多人可能很陌生。=== 表示恒等,首先比較兩邊的變量數(shù)據(jù)類型是否相等,其次比較兩邊的變量的數(shù)值是否相等;== 表示相等即僅僅比較兩邊變量的數(shù)值是否相等。
    2018-03-03
  • 裁剪字符串trim()自定義改進(jìn)版

    裁剪字符串trim()自定義改進(jìn)版

    下面講述的是自定義trim()函數(shù)遇到的問題,改進(jìn)的過程,建議在支持的瀏覽器中使用原生函數(shù)
    2013-04-04
  • JavaScript ES6中的簡寫語法總結(jié)與使用技巧

    JavaScript ES6中的簡寫語法總結(jié)與使用技巧

    我們在看編寫的JS ES6代碼時(shí)經(jīng)常會(huì)看到許多簡寫的語法,本篇文章就為大家一一介紹JavaScript ES6可以簡寫的語法
    2018-12-12

最新評(píng)論

桐梓县| 五家渠市| 湖州市| 比如县| 定南县| 宁陕县| 柏乡县| 大连市| 武城县| 明溪县| 布拖县| 彩票| 南召县| 寿光市| 上高县| 溧阳市| 本溪市| 华池县| 昌宁县| 灌南县| 牙克石市| 宜兰县| 克什克腾旗| 齐齐哈尔市| 安平县| 大方县| 孟津县| 宁远县| 常宁市| 鄢陵县| 辽阳市| 彭山县| 睢宁县| 祥云县| 句容市| 洛川县| 镇雄县| 克什克腾旗| 育儿| 天峨县| 安新县|