【面试题】forEach能跳出循环吗?

2023-09-13 18:07:15

前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

【国庆头像】- 国庆爱国 程序员头像!总有一款适合你!

如果面试官,或者有人问你foreach怎么跳出循环,请你大声的告诉ta,跳不出!!!!!!!!!!

foreach 跳不出循环

为什么呢?

先看看foreach大体实现。

Array.prototype.customForEach = function (fn) {
    for (let i = 0; i < this.length; i++) {
        fn.call(this, this[i], i, this)
    }
}

list.customForEach((item, i, list) => {
    console.log(item, i, list)
})

let list = [1,2,3,4,5]

list.forEach((item,index,list)=>{
    console.log(item,index,list)
})

list.customForEach((item,index,list)=>{
    console.log(item,index,list)
})

image.png

两个输出的结果是一样的没啥问题,这就是foreach的大体实现,既然都知道了它的实现,那么对它为什么跳不出循环♻️应该都知道了,再不清楚的话,再看一下下面的例子。


function demo(){
    return 'demo'
}

function demo2(){
    demo()
    return 'demo2'
}

demo()

在demo2函数里面调用demo函数,demo函数的return能阻止demo2函数下面的执行吗?很明显不行啊,demo函数里的return跟demo2函数一点关系都没有。现在你再回头看看foreach的实现,就明白它跳不出循环一清二楚了。

有点同学说不是可以通过抛出错误跳出循环吗?是的。看看下面例子。


let list = [1,2,3,4,5]

try {
    list.forEach((item, index, list) => {
        if (index === 2) {
            throw new Error('demo')
        }
        console.log(item)
    })
} catch (e) {
    // console.log(e)
}

image.png

结果是我们想要,但是你看代码,哪个正常人会这样写代码?是非foreach不用吗?还是其他的循环关键字不配呢。

end

有反驳在评论区,show me your code !!!!!!!!!

前端面试题库 (面试必备)            推荐:★★★★★

地址:前端面试题库

【国庆头像】- 国庆爱国 程序员头像!总有一款适合你!

更多推荐

使用自定义注解发布webservice服务

使用自定义注解发布webservice服务概要代码自定义注解WebService接口服务发布配置使用结果概要在springboot使用webservice,发布webservice服务的时候,我们经常需要手动在添加一些发布的代码,比如:@BeanpublicEndpointorganizationEndpoint(){

Redis 篇

1、为什么要用缓存?使用缓存的目的就是提升读写性能。而实际业务场景下,更多的是为了提升读性能,带来更好的性能,带来更高的并发量。Redis的读写性能比Mysql好的多,我们就可以把Mysql中的热点数据缓存到Redis中,提升读取性能,同时也减轻了Mysql的读取压力。2、什么是Redis?Redis是一个开源(BSD

嵌入式:驱动开发 Day9

作业:通过platform总线驱动实现a.应用程序通过阻塞的io模型来读取number变量的值b.number是内核驱动中的一个变量c.number的值随着按键按下而改变(按键中断)例如number=0按下按键number=1,再次按下按键number=0d.在按下按键的时候需要同时将led1的状态取反e.驱动中需要编

树莓派使用Nginx 搭建轻量级网站远程访问

文章目录1.Nginx安装2.安装cpolar3.配置域名访问Nginx4.固定域名访问5.配置静态站点转载自cpolar极点云文章:树莓派使用Nginx搭建轻量级网站远程访问安装Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的Web服务器,可以用于托管网站或Web应用程序。相比其他Web服务器,

01_Bootstrap基础组件01

1什么是Bootstrap?Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML、CSS、JavaScript的,它简洁灵活,使Web开发更加快捷。它对HTML、CSS和JavaScript进行了封装,使它们使用起来更方便。我们只需要使用它已经设定好的类,或规则,即可快速应

[全家桶之SpringMVC]SpringMVC 的模块和结构

目录SpringMVC的模块Web模块WebMVC模块SpringMVC的结构SpringMVC的模块SpringMVC的模块主要包括以下几个:Web模块:这个模块提供了Spring对Web项目的支持,包括文件上传、异常处理、国际化、主题等功能。WebMVC模块:这个模块是SpringMVC的核心,它包含了前端控制器、

驱动开发--字符设备驱动的实现

一、字符设备驱动内部注册过程通过对register_chrdev内部的实现过程进行分析,其实注册字符设备驱动的过程就是下面几步:1.分配structcdev对象空间2.初始化structcdev对象3.注册cdev对象完成上面的三步,就完成了字符设备驱动的注册。二、通过字符设备驱动分步注册方式编写LED驱动,完成设备文

【LittleXi】第五章 Process API exercise

文章目录【LittleXi】第五章ProcessAPIexercise第五章(simulator)实验准备第五章(code)【LittleXi】第五章ProcessAPIexercise第五章(simulator)实验准备github下载对应代码https://github.com/remzi-arpacidussea

基于Python的微博舆论分析,微博情感分析可视化系统(V2.0)

简介Python基于微博的舆情分析,情感分析可视化系统微博舆情分析系统,项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。功能包括登陆注册用户管理热门事件展示舆情分析,包括舆情分析,情感分类,用户分布,关键词云图,热门帖子,热门评论排名舆情预警个人信息管理原文地址先后进行了数据获取和筛选存储,对存储后的

自然语言处理应用(三):微调BERT

微调BERT微调(Fine-tuning)BERT是指在预训练的BERT模型基础上,使用特定领域或任务相关的数据对其进行进一步训练以适应具体任务的需求。BERT(BidirectionalEncoderRepresentationsfromTransformers)是一种基于Transformer架构的深度双向预训练语

机器学习 day35(决策树)

决策树上图的数据集是一个特征值X采用分类值,即只取几个离散值,同时也是一个二元分类任务,即标签Y只有两个值上图为之前数据集对应的决策树,最顶层的节点称为根节点,椭圆形节点称为决策节点,矩形节点称为叶子节点决策树学习算法的工作是,在所有可能的决策树中,选择一个在训练集上能表现良好,并能很好的推广到新数据(即交叉验证集和测

热文推荐