Javascript JS函数在控制台中提供了未定义的功能,但我';我在等一个数字

Javascript JS函数在控制台中提供了未定义的功能,但我';我在等一个数字,javascript,arrays,object,undefined,Javascript,Arrays,Object,Undefined,我正在构建一个JS新闻代码,它在画布上以像素字母呈现字符串。当渲染字符串的可视长度(以像素为单位,在下面的函数中用全局变量“calc_w”表示)超过画布的宽度(在下面的函数中用全局变量“w”表示)时,我需要将渲染字符串的后半部分放在下一行。我根据字符串中的空格数(以下由变量“spaces”表示)确定在何处拆分字符串 但是,我无法理解为什么我的小函数在控制台中返回undefined,而不是spc\u indx[I]变量的数字 function ins_breaks(str) { var s

我正在构建一个JS新闻代码,它在画布上以像素字母呈现字符串。当渲染字符串的可视长度(以像素为单位,在下面的函数中用全局变量“
calc_w
”表示)超过画布的宽度(在下面的函数中用全局变量“
w
”表示)时,我需要将渲染字符串的后半部分放在下一行。我根据字符串中的空格数(以下由变量“
spaces
”表示)确定在何处拆分字符串

但是,我无法理解为什么我的小函数在控制台中返回undefined,而不是
spc\u 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;
        }
    }
}
函数插入中断(str){
var空间=0;
var spc_indx=[];
如果(计算w>w){
对于(变量i=0;i
记录“
spaces
”会产生预期的数字,但当我将空格分配给
spc\u indx
数组的一部分时,它返回时未定义。为什么
spc\u indx
数组未定义,并且不是我期望返回的数字

这是小提琴:

应该是

spc_indx[spaces] = i;

什么是
valc_w
w
设置为,什么是
str
?str是字符串,它被传递到顶部的函数。我知道那是什么,我想知道它的值是什么。见附件。你想做什么就做什么。非常感谢你,伙计!那完全奏效了!我知道这很简单,只是我做得不对。再次感谢。只要stack允许,我就会选择这个作为答案。
spc_indx[spaces] = i;