打字稿功能在第一次返回后没有结束?

时间:2017-05-08 16:00:09

标签: typescript

我有一个基本上搜索列表的功能,看看我的目标项是否匹配。我有以下代码:

var subjectTimePoints = [5, 6, 7, 8, 9];
var selectedTimePoint = 9;
function subjectIdRequiredTimepoint() {
        this.subjectTimePoints.forEach(timepoint => {
            if (timepoint === this.selectedTimePoint) {
                console.log('TTTTTTTTTTTTTTTTTT');
                return true;
            }
        });
        console.log('FFFFFFFFFFFFFFFF');
        return false;
}

subjectIdRequiredTimepoint();

该函数仍会打印出'FFFFFFFFFFFFFFFF'并返回false,即使我先打印出'TTTTTTTTTTTTTTTTTT'。那么为什么函数在第一次返回后没有结束呢?

1 个答案:

答案 0 :(得分:3)

这是因为return中的forEach未从subjectIdRequiredTimepoint返回控件。它只从回调函数返回forEach

您可以使用Array#some

轻松替换您的逻辑
function subjectIdRequiredTimepoint() {
    let isMatched = this.subjectTimePoints.some(timepoint => timepoint === this.selectedTimePoint);
    if (isMatched) {
        console.log('TTTTTTTTTTTTTTTTTT');
    }
    else {
        console.log('FFFFFFFFFFFFFFFF');
    }
    return isMatched;
}