You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript自定义myIndexOf函数for循环末尾不运行、返回-1失效问题求助

问题排查结果

核心错误原因

你的myIndexOf方法仅在传入第二个起始索引参数(走else分支)的场景下,才会在循环未匹配到目标值时返回-1;未传入第二个参数走if分支的场景下,循环结束后没有配置返回语句,未匹配到目标值时函数会默认返回undefined。
你测试查找giraffe时没有传第二个参数,走if分支走完循环没有匹配结果,也没有返回值,所以输出undefined,同时也不会走到else分支里的打印逻辑,自然看不到end of loop的输出。

修复方案

简化写法(推荐)

可以直接用空值合并运算符处理起始索引的默认值,去掉重复的循环逻辑:

Array.prototype.myIndexOf = function(...args) {
    const target = args[0];
    const startIndex = args[1] ?? 0;
    for(let i = startIndex; i < this.length; i++){
        if(this[i] === target){
            return i;
        }
    }
    console.log("end of loop")
    return -1;
};

保留原有分支结构的写法

如果不想修改原有结构,只需要补全if分支循环结束后的返回逻辑即可:

Array.prototype.myIndexOf = function(...args) {
    if(args[1] === undefined){
        for(let i = 0; i < this.length; i++){
            if(this[i] === args[0]){
                return i;
            }
        }
        // 补全if分支未匹配时的返回
        console.log("end of loop")
        return -1;
    } else {
        for(let i = args[1]; i < this.length; i++){
            if(this[i] === args[0]){
                return i;
            }
        }
        console.log("end of loop")
        return -1;
    }
};

修复后所有未匹配到目标值的场景都会正确返回-1,同时打印语句也能正常输出。

内容的提问来源于stack exchange,提问作者darkenergy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 13:27:03