JS 函数在控制台中给我未定义但我期待一个数字

JS Function Gives Me Undefined in Console but I'm Expecting a Number

我正在构建一个 JS 新闻自动收报机,它以像素字母在 canvas 上呈现字符串。当呈现的字符串的视觉长度(以像素为单位测量并在下面的函数中由全局变量“calc_w”表示)超过宽度(在下面的函数中由全局变量“w”表示) canvas,我需要将渲染字符串的后半部分放在下一行。我根据字符串中的空格数(在下面用变量“spaces”表示)确定在哪里拆分字符串。

但是我不明白为什么我的小函数在控制台中返回未定义而不是 spc_indx[i] 变量的数字。

function ins_breaks(str) {
    var spaces = 0;
    var spc_indx = [];
    if (calc_w > w) {
        for (var i = 0; i < str.length; i++) {
            if (str.charAt(i) == " ") {
                spaces++;

                spc_indx[i] = spaces; //Tells the switch where to cut the string.

            }
        }
        switch (spaces) {
            case 4:
                //4 spaces = 5 words.
                var line2 = str.substr(spc_indx[2]);
                //str.replace(' ', '');
                console.log(spc_indx[2])
                break;
            case 5:
                console.log(spc_indx[2])
                break;
        }
    }
}

记录“spaces”按预期产生了数字,但是当我将空格分配给 spc_indx 数组的一部分时,它返回未定义。为什么 spc_indx 数组未定义,而不是我期望返回的数字?

这里是fiddle:https://jsfiddle.net/9u3ez6gu/22/

spc_indx[i] = spaces;

应该是

spc_indx[spaces] = i;