当前位置:   article > 正文

JavaScript forEach() 方法的使用及其注意事项_javascript foreach with index

javascript foreach with index

目录

forEach() 方法的作用、定义与用法

语法

语法分析(参数)

实际应用

注意事项


1、JavaScript forEach() 的作用与原理

  • 作用:遍历数组、集合。

  • 原理:用于调用数组的每个元素,并将元素传递给回调函数。

2、语法

array.forEach(callbackFn(currentValue, index, arr), thisValue)

其他形式的语法格式:

  1. // 箭头函数
  2. forEach((element) => { /* … */ })
  3. forEach((element, index) => { /* … */ })
  4. forEach((element, index, array) => { /* … */ })
  5. // 回调函数
  6. forEach(callbackFn)
  7. forEach(callbackFn, thisArg)
  8. // 内联回调函数
  9. forEach(function(element) { /* … */ })
  10. forEach(function(element, index) { /* … */ })
  11. forEach(function(element, index, array){ /* … */ })
  12. forEach(function(element, index, array) { /* … */ }, thisArg)

3、语法分析

  1. array:被遍历的数组名
  2. forEach:forEach方法的方面名
  3. callbackFn:数组中每个元素需要调用的函数。(必选)
  4. currentValue:当前元素(必选)
  5. index:当前元素的索引值(可选)
  6. arr:当前元素的所属的数组对象(可选)
  7. thisValue:传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值(可选)

4、实际应用

代码演示

  1. <body>
  2. <p id="demo"></p>
  3. <script>
  4. //获取元素对象
  5. demo = document.getElementById("demo");
  6. //声明一个被遍历的数组
  7. let numbers = [3, 8, 2, 9];
  8. //应用forEath语法遍历
  9. numbers.forEach(function (item, index) {
  10. //获取元素对象的内容,并放入被遍历的值
  11. demo.innerHTML =
  12. demo.innerHTML + "index[" + index + "]: " + item + "<br>";
  13. });
  14. </script>
  15. </body>

效果图 

5、注意事项

  1. foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本

  2. foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思

  3. await 不能用在 forEach 中:原因:那就是 forEach 只支持同步代码

  4. forEach 循环无法中途跳出,break 命令或 return 命令都不能奏效

  5. forEach(): 没有返回值,本质上等同于 for 循环,对每一项执行 function 函数。即map是返回一个新数组,原数组不变,forEach 是不改变原数组(尽管回调函数 callbackFn 在被调用时可能会改变原数组)

  6. 不支持 continue,用 return false 或 return true 代替

  7. 不支持 break,用 try catch/every/some 代替

  8. 实现continue:

    1. var arr = [1,2,3,4,5];
    2. var num = 3;
    3. arr.some(function(v){
    4. if(v == num) {
    5. return; //
    6. }
    7. console.log(v);
    8. });

    实现break:

    1. var arr = [1,2,3,4,5];
    2. var num = 3;
    3. arr.every(function(v){
    4. if(v == num) {
    5. return false;
    6. }else{
    7. console.log(v);
    8. return true;
    9. }
    10. });
    1. try {
    2. var array = ["first","second","third","fourth"]; // 执行到第3次,结束循环
    3. array.forEach(function(item,index){
    4. if (item == "third") {
    5. throw new Error("EndIterative");
    6. }
    7. alert(item);// first,sencond
    8. });
    9. } catch(e) {
    10. if(e.message!="EndIterative") throw e;
    11. };

6、总结

forEach实用性:

       建议:尽量不要使用forEach; 

       原因:其实也简单,就是为了避免GC,因为forEach会“偷偷”申请内存,使用过度的话自然会引发系统的垃圾收集!

       鉴此,建议大家平日尽量限制使用foreach,转而使用for之类的循环控制语法,尤其注意一下Update(或者说频繁调用的函数)中的foreach使用,不小心的话确实会导致频繁

GC

个人总结:

       虽然forEach遍历的时候更加简洁,效率和for循环相同,不用关心集合下标的问题,减少了出错的效率,但是forEach不能同时遍历多个集合,在遍历的时候无法修改和删除集合数据,方法不能使用break,continue语句跳出循环,或者使用return从函数体返回,对于空数组不会执行回调函数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/94129
推荐阅读
相关标签
  

闽ICP备14008679号