首页 > 试题广场 >

执行以下程序,输出结果为() var arr = [2,1,

[单选题]

执行以下程序,输出结果为()

var arr = [2,1,3,5,9];

var count = 0;

arr.forEach((val1,val2)=>{

        count++;

        if(count % 3 == 0){

            return;

        }

        console.log(val1);

})

  • 2 1

  • 0 1

  • 0 1 3 4

  • 2 1 5 9

var arr = [2,1,3,5,9];
var count = 0;

arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9];
        count++; //第一次循环count++为0
        if(count % 3 == 0){ //第一次循环count为1,不满足条件,不进入if条件里
            return;
        }
        console.log(val1);//第一次循环val1=2
})

arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9];
        count++; //第二次循环count++为1
        if(count % 3 == 0){ //第二次循环count为2,不满足条件,不进入if条件里
            return;
        }
        console.log(val1);//第二次循环val1=1
})


arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9];
        count++; //第三次循环count++为2
        if(count % 3 == 0){ //第三次循环count为3,满足条件,进入if条件里
            return;     //return跳出本次循环,不执行后续代码
        }
        console.log(val1);//第三次循环没执行到这
})


arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9];
        count++; //第四次循环count++为3
        if(count % 3 == 0){ //第四次循环count为4,不满足条件,不进入if条件里
            return;         
        }
        console.log(val1);//第四次循环val1=5
})


arr.forEach((val1,val2)=>{//arr = [2,1,3,5,9];
        count++; //第五次循环count++为4
        if(count % 3 == 0){ //第五次循环count为5,不满足条件,不进入if条件里
            return;         
        }
        console.log(val1);//第五次循环val1=9
})



编辑于 2022-01-26 12:41:14 回复(4)
  1. 在forEach中使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错
  2. return false;//仍然会执行完循环,但不再执行循环后面的js代码 let arr = [2,31,3] arr.forEach((val, index) => { if(val===31) { return false } console.log('执行第' + index + '次数') }) 执行第0次数
    执行第2次数
    其中val =31 这一次的循环return false以后的代码不再执行

编辑于 2021-12-14 10:01:57 回复(2)
根据MDN的forEach方法注意点,除了抛出异常以外,没有办法跳出或中止forEach方法。如果需要中止或跳出循环,不应该是forEach。
发表于 2021-12-13 15:51:42 回复(0)
本题的3个考点,搞懂这三点,应该不会出错了。
(1)foreach的回调函数的三个参数的意义。
   value(必须)是数组元素的值;index(可选)是数组元素的下表;array(可选)是数组本身。
(2)自加运算符的运算顺序。
   a++:先赋值,再自加
   ++a:先自加,再赋值
  (3)  除了抛出异常以外,没有办法中止或跳出 forEach() 循环。(摘自MDN)
   所以,即使有return,还是会执行完所有回调
  如果是输出val2,则选C
发表于 2022-04-19 21:46:23 回复(2)
  1. forEach:使用 return false 或者 break无法跳出整个循环,并且使用break会直接报错
  2. for of: 与for(;;)类似,可以跳出循环
  3. every:every的判断是在识别到不满足的条件时,立刻停止
  4. filter、some:无法跳出循环,并且使用break会直接报错
发表于 2022-04-15 14:08:19 回复(0)
return结束当前的循环,进入下一次循环
发表于 2022-01-29 14:02:22 回复(0)

forEach() 的 continue 与 break

forEach() 本身是不支持的 continue 与 break 语句的,我们可以通过 some 和 every 来实现。

使用 return 语句实现 continue 关键字的效果:

https://www.runoob.com/jsref/jsref-foreach.html  发现这个题就是runnoob的示例  通过用return 实现continue的效果
发表于 2022-04-01 23:08:35 回复(1)
forEach函数接收一个回调函数作为参数,回调函数有三个参数 参数一是数组元素,参数二是数组元素下标,参数三是原数组。在forEach中除了抛出异常外,没有办法跳出forEach循环!
发表于 2022-07-20 21:35:01 回复(0)
终止或跳出循环不应该用forEach
发表于 2022-05-07 17:17:40 回复(0)