forEach 方法对数组中的每一个元素都添加了一个回调函数(除了稀松数组)
    参数

    1. cb(val, idx, arr) val是当前值,idx 当前值在数组的下标 ,arr是当前数组
    2. thisArg

    特性

    1. 对于稀松数组是不会遍历的
    2. 数组在调用cb之前就已经确定好。不会遍历添加的元素
    3. 数组在迭代的时候被修改了,则其他元素会被跳过
      1. var arr = [1,,,,,2];
      2. arr.forEach((value, idx, array) => {
      3. console.log(value)
      4. })
      当数组中出现了稀松数组,但是forEach 并未对其进行遍历
      image.png
      1. var arr = [1,,,,,2];
      2. arr.forEach((value, idx, array) => {
      3. console.log(value);
      4. array.push(value);
      5. })
      对原数组进行了添加数据 但是forEach也只是执行了两次
      image.png
      1. var arr = [1,,,,,2];
      2. arr.forEach((value, idx, array) => {
      3. array.splice(idx, arr.length);
      4. console.log(value);
      5. })
      对原数组的元素删除,就只是循环了一次;
      image.png
      当元素在迭代的时候被修改的时候,则其他元素会被跳过
      1. var arr = [1, 2, 3, 4]
      2. arr.forEach((item, idx, array) => {
      3. if(item === 2){
      4. array.shift();
      5. }
      6. console.log(item)
      7. })
      2被移除之后,此时idx已经变成了2. arr[2] == 4
      image.png