开发者问题收集

错误“无法在未定义时调用 toString”但变量已定义

2011-07-13
15238

在这段 Javascript 中

creds = cp[0];
data[creds.toString()] = cp[1]; // data is an object

Chrome 在第二行向我提供了错误 TypeError: Cannot call method toString of undefined 。但是,我已通过调试器验证 creds 的值此时是数字 1400

发生了什么?

2个回答

使用 for in 循环对数组进行操作时应非常谨慎。请改用普通循环。

数组 cpl 不仅包含数据,还包含函数,因此循环中的第三个 cp 是函数。这就是 creds 变为未定义的原因。

此链接有很好的解释: 为什么在数组迭代中使用“for...in”是个坏主意?

Sanghyun Lee
2011-07-13

Javascript 不需要变量类型,因此可以通过删除 toString() 来实现。

顺便说一句,我不确定您是否可以在原始类型上调用 toString() 作为 int

mastaH
2011-07-13