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

JS分割单词代码报semi-space copy allocation failed内存溢出原因咨询

报错根因
  • 你的代码内层while循环没有做索引越界判断:当输入句子的末尾字符不是空格时,循环内的i会持续自增超过sentence.length,此时sentence[i]返回undefined,永远满足!== ' '的判断条件,程序进入死循环。
  • 死循环运行过程中,word变量会持续拼接undefined值,占用内存持续上涨,最终触发JavaScript堆内存分配失败的报错。
修复方案

只需在while循环的判断条件中新增索引边界校验即可:

var countValidWords = function(sentence) {
    let words = [];
    for(let i = 0; i < sentence.length; ++i){
        let word = '';
        // 新增i < sentence.length边界判断,避免索引越界死循环
        while(i < sentence.length && sentence[i] !== ' '){
            word += sentence[i];
            ++i;
        }
        if(word !== '')
            words.push(word);
    }
    console.log(words);
};
可选优化

如果你不需要手动实现分割逻辑,直接调用JS原生API可以更简洁地实现按任意多个空格分割单词的需求:

const words = sentence.trim().split(/\s+/)

该实现会自动忽略开头、结尾的空格,以及单词之间的多个连续空格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:03