我有一个逗号分隔值的字符串:
var newVal = "9103174091,1231231232"
$(ctrl).val(DataReview.Encryption.formatPersonNmbr(newVal));
我用这个值调用一个函数:
function (val) {
val = val.split(",");
var newVal = "";
for (var i = 0; i <= val.length; ++i)
{
val[i] = val[i].replace(/ /g, '');
var newVal = val[i];
if (val[i].length == 10 || val[i].length == 11 || val[i].length == 12) {
if (val[i].length == 11) {
val[i] = val[i].substring(0, 6) + val[i].substring(7);
}
if (val[i].length == 10) {
var year = '20' + val[i].substring(0, 2);
var month = val[i].substring(2, 4);
var day = val[i].substring(4, 6);
var date = new Date(year, month - 1, day);
if (isNaN(date) == false) {
var currentDate = new Date();
if (date > currentDate) {
val[i] = '19' + val[i];
} else {
val[i] = '20' + val[i];
}
}
}
}
newVal += val[i].substring(0, 8) + '-' + val[i].substring(8);
}
return newVal;
}
当我运行它时,我收到以下错误:
TypeError: val[i] is undefined
val[i] = val[i].replace(/ /g, '');
我无法理解这是如何定义的?有谁可以向我解释我做错了什么?
答案 0 :(得分:0)
您确定这是for循环的正确结束条件吗?
for (var i = 0; i <= val.length; ++i)
或者你是说这个:
for (var i = 0; i < val.length; ++i)
这可能是由一次性错误引起的。在最后一个元素之后访问元素评估为undefined
。
var list = [2, 4, 6, 8];
for (var i = 0; i <= val.length; i++){
console.log(list[i]);
}
2
4
6
8
undefined
最后一次出现是undefined
因为val[4]
没有值,所以列表中的值最多只能访问val[3]
。它的索引达到4,因为val.length
返回4,因为有四个元素。使用小于或等于运算符可以发生此错误。