我怎样才能解决这个toString()错误?

时间:2017-02-18 17:30:36

标签: javascript tostring

错误由toString()函数产生。

  

“error”“TypeError:无法读取未定义的属性'toString'

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;

  }

2 个答案:

答案 0 :(得分:0)

你确定,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”,undefined没有toString()方法

在第二个圆圈中设置j = 1的起始值并解决此错误。

答案 1 :(得分:0)

发生错误是因为最终[j-1]将尝试访问不存在的索引。假设一个典型的数组,那将在以下时间发生:

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;
}