无法读取属性';0';数组Javascript中未定义的

无法读取属性';0';数组Javascript中未定义的,javascript,Javascript,好吧,这真的让我发疯了。我不明白为什么我一直得到未捕获的类型错误:无法读取未定义的属性“0” 有人能指出是什么原因导致了这个数组行上的uncaught错误num=myArray[0] var val= this.value; myArray = checkinput(val); num = myArray[0]; data = myArray[1]; if (num == 0 ) { .... } else { .... } /*FUNCTIONS*/ func

好吧,这真的让我发疯了。我不明白为什么我一直得到未捕获的类型错误:无法读取未定义的属性“0”

有人能指出是什么原因导致了这个数组行上的
uncaught错误
num=myArray[0]

 var val= this.value;

 myArray = checkinput(val); 
 num = myArray[0];
 data = myArray[1];

 if (num == 0 ) { 
  ....
 } else {
  ....
 }

/*FUNCTIONS*/

function checkinput(val) {
var val;
//some regex here

if (regexA.test(val)) {
    var fname = val.match(regexA)[0];
    var arr = [0,fname]; // 0 as identifier
    return arr;
    }   

else if (regexB.test(val)) {
    var lname = val.match(regexB)[0];
    var arr= [1,lname]; // 1 as identifier
    return arr;
    }
}

这是因为无论是
regexA.test(val)
还是
regexB.test(val)
都不会返回
true
。尝试添加带有错误的
else
子句:

...
} else {
    console.log("error, test(val) invalid: " + test(val));
}

我不能再帮你了,因为我不知道你的正则表达式变量的内容。但是如果我是你,我会开始看那里。

你的函数
ckeckinput
并不总是返回值。您的输入不能与任何一个测试匹配。当然,
checkinput
函数中的两个条件都为false,因此它不会返回任何内容。如何正确地继续调试?请使用浏览器的开发人员控制台。设置断点并运行它。