我想知道是否有更好的方法来实现这一点——看起来从foreach返回并不从包含foreach循环的函数返回,这可能是C#devs的期望.

只是想知道是否有更干净的方法:

example() {
    var forEachReturned;

    this.items.forEach(item => {
        if (true) {
            forEachReturned = true;
            return;
        }
    });

    if (forEachReturned) {
        return;
    }

    // Do stuff in case forEach has not returned
}

推荐答案

更干净的方法是不使用.forEach.如果您使用的是TypeScript或现代版本的JavaScript,几乎不需要它:

example() {
    for (let item of this.items) {
        if (item === 3) {
            return;
        }
    }      

    // Do stuff in case forEach has not returned
}

如果循环中的代码没有任何副作用,并且您只是在判断每个项目的条件,那么您也可以使用函数方法来处理.some:

example() {
    if (this.items.some(item => item === 3)) {
        return;
    }

    // Do stuff in case we have not returned
}

Typescript相关问答推荐

交叉点对数字和布尔的处理方式不同

如何在类型脚本中声明对象其键名称不同但类型相同?

类型脚本接口索引签名

`((PrevState:NULL)=>;NULL)|null`是什么意思?

在配置对象上映射时,类型脚本不正确地推断函数参数

是否可以从函数类型中创建简化的类型,go 掉参数中任何看起来像回调的内容,而保留其余的内容?

嵌套对象的类型

CDK从可选的Lambda角色属性承担角色/复合主体中没有非空断言

vue-tsc失败,错误引用项目可能无法禁用vue项目上的emit

在组件卸载时try 使用useEffect清除状态时发生冲突.react +打字

自动通用回调

为什么上下文类型在`fn|curred(Fn)`的联合中不起作用?

TypeScrip-根据一个参数值验证另一个参数值

将布尔值附加到每个对象特性

如何定义这样一个TypeScript泛型,遍历路由配置树并累积路径

无法缩小深度嵌套对象props 的范围

如何为带有参数的函数类型指定类型保护?

使用RXJS获取数据的3种不同REST API

如何使对象同时具有隐式和显式类型

如何在 TypeScript 类型定义中简化定义长联合类型