广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JavaScript基础之Array forEach使用示例
  • 425
分享到

JavaScript基础之Array forEach使用示例

JavaScript Array forEachJavaScript 基础 2022-12-21 15:12:29 425人浏览 薄情痞子
摘要

目录前言尝试一下forEach实现对象模仿数组forEach跳出循环体?前言 forEach() 方法对数组的每个元素执行一次给定的函数。 回调函数中传递三个参数: 第一

前言

forEach() 方法对数组的每个元素执行一次给定的函数。

回调函数中传递三个参数:

  • 第一个参数,就是当前正在遍历的元素
  • 第二个参数,就是当前正在遍历的元素的索引
  • 第三个参数,就是正在遍历的数组

尝试一下

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

输出内容如下:

那我就好奇了,在forEach回调函数中的this指向谁呢?forEach函数是否有返回值

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

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

那我们可以更改this指向吗?

forEach其实接受两个参数,第二个参数 可选参数。当执行回调函数时,用作 this 的值。

forEach实现

Array.prototype.myForEach = function (callback) {
  var _arr    = this,// 调用时谁 this就是谁
      _len    = _arr.length,
      thisArg = arguments[1] || window;
  // 校验callback之能是 function时才往下执行
  if (typeof callback !== 'function') {
    throw new Error(`${callback} is not a function`);
  }
  // for循环
  for (var i = 0; i < _len; i++) {
    callback.apply(thisArg, [_arr[i], i, _arr]);
  }
  // 注意 forEach 没有返回值
}

对象模仿数组

对象的原型上并没有 forEach,所以我们调用 Array.prototype.forEach方法通过call改变方法内部的this指向,myForEach内部循环需要length, 所以我们在对象中模拟了添加了一个length属性,对象的key 分别为 0,1,2 分别对应了循序中的下标。

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

forEach跳出循环体?

forEach可以跳出循环体吗?其实 returnbreak 是无法做到的,不过可以使用 throw new Error

var list = ["云层上的光", "初心", "栾树"];
try{
    list.forEach(item=&gt;{
        if(item === "初心") throw new Error("初心");
    })
}catch(err){
    if(err.message === "初心")	
        console.log("在执行到初心时跳出循环体了")
    else 
        console.error(err)
}

以上就是javascript基础之Array forEach使用示例的详细内容,更多关于JavaScript Array forEach的资料请关注编程网其它相关文章!

--结束END--

本文标题: JavaScript基础之Array forEach使用示例

本文链接: https://www.lsjlt.com/news/175462.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作