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

JavaScript循环返回undefined:为单词首尾加星号时末尾出现异常

问题分析与修复方案

为什么末尾会出现undefined?

你的循环条件写了i <= s.length,但字符串的索引是从0开始,到s.length - 1结束。当i等于s.length时,s[i]是不存在的,值为undefined,这时候代码会把*undefined拼接到结果字符串里,导致末尾出现undefined。

另外,空字符串的判断放在循环内部完全没必要,每次循环都执行一次判断,不如提前处理更高效。

修复代码(按你当前的字符前置星号逻辑)

如果你的需求是给每个字符前面加星号,最后再补一个结尾星号(比如输入abc得到*a*b*c*),修复后的代码如下:

function solution(s) {
    // 提前处理空字符串
    if (s === "") {
        return "*";
    }
    let newString = "";
    // 循环条件改为i < s.length,避免越界访问
    for (let i = 0; i < s.length; i++) {
        newString += "*" + s[i];
    }
    // 给整个字符串末尾加星号
    newString += "*";
    return newString;
}

如果你的实际需求是给每个单词首尾加星号

比如输入hello world要得到*hello* *world*,那可以用更简洁的写法:

function solution(s) {
    if (s === "") {
        return "*";
    }
    // 按空格分割单词,处理多个连续空格的情况
    return s.split(/\s+/).map(word => `*${word}*`).join(" ");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:20:48