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

时间:2015-05-07 22:05:32

标签: javascript arrays object undefined

我正在构建一个JS新闻自动收录器,它以像素字母在画布上呈现字符串。当渲染字符串的可视长度(以像素为单位并在下面的函数中由全局变量&{39; calc_w'表示)超过宽度时(由全局变量' {{1表示)在画布的下面的函数中,我需要将渲染字符串的后半部分放在下一行。我根据字符串中的空格数确定了在哪里打破字符串(下面用变量' w')表示。

但是我无法弄清楚为什么我的小函数在控制台中返回undefined而不是spaces变量的数字。

spc_indx[i]

记录&#39; 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; } } } &#39;产生了预期的数字,但是当我为spaces数组的一部分分配空格时,它返回未定义。为什么spc_indx数组未定义,而不是像我预期要回来的数字?

这是小提琴:https://jsfiddle.net/9u3ez6gu/22/

1 个答案:

答案 0 :(得分:2)

spc_indx[i] = spaces;

应该是

spc_indx[spaces] = i;