我该如何解决这个 toString() 错误?
how can i solve this toString() error?
错误是由 toString()
函数产生的。
"error" "TypeError: Cannot read property 'toString' of undefined
Image of error
这是代码:
while( items[i][j].toString().charCodeAt() < items[i][j-1].toString().charCodeAt() )
{
var temp =items[i][j];
items[i][j]=items[i][j-1];
items[i][j-1]=temp ;
j=j-1;
}
您确定 j 变量永远不会等于 0 吗?
如果你有两个像这样的圆圈:
var arr = [[1,2,3],
[4,5,6],
[7,8,9]];
for (var i = 0; i < arr.length; ++i) {
for (var j = 0; j < arr[i].length; ++j) {
arr[i][j - 1].toString() // error
}
}
你有错误,因为 j 在第一次等于 -1 即 "undefined",未定义没有 toString() 方法
在第二个圆圈中设置 j = 1 的起始值,您就解决了这个错误。
错误的发生是因为 [j-1]
最终将尝试访问 non-existent 索引。假设一个典型的数组,这将在以下时间发生:
var j = 0;
console.log(items[i][j-1]); // undefined
console.log(items[i][-1]); // undefined
而且,undefined
值不允许使用方法。
为避免这种情况,循环还应检查是否已到达终点:
while ( j > 0 && items[i][j]... ) {
// ...
j=j-1;
}
错误是由 toString()
函数产生的。
"error" "TypeError: Cannot read property 'toString' of undefined
Image of error
这是代码:
while( items[i][j].toString().charCodeAt() < items[i][j-1].toString().charCodeAt() )
{
var temp =items[i][j];
items[i][j]=items[i][j-1];
items[i][j-1]=temp ;
j=j-1;
}
您确定 j 变量永远不会等于 0 吗?
如果你有两个像这样的圆圈:
var arr = [[1,2,3],
[4,5,6],
[7,8,9]];
for (var i = 0; i < arr.length; ++i) {
for (var j = 0; j < arr[i].length; ++j) {
arr[i][j - 1].toString() // error
}
}
你有错误,因为 j 在第一次等于 -1 即 "undefined",未定义没有 toString() 方法
在第二个圆圈中设置 j = 1 的起始值,您就解决了这个错误。
错误的发生是因为 [j-1]
最终将尝试访问 non-existent 索引。假设一个典型的数组,这将在以下时间发生:
var j = 0;
console.log(items[i][j-1]); // undefined
console.log(items[i][-1]); // undefined
而且,undefined
值不允许使用方法。
为避免这种情况,循环还应检查是否已到达终点:
while ( j > 0 && items[i][j]... ) {
// ...
j=j-1;
}