[英]TypeError: 'undefined' is not an object
我有一个目前相当不正常的 Javascript 程序,它一直给我带来问题。 但是,它引发了一个我不明白的错误:
TypeError: 'undefined' is not an object (evaluating 'sub.from.length')
正如您可能猜到的那样,我正在尝试做的是检查sub
dict 中某个“ from
”数组的length
。 这是整个函数的源代码,这是我认为导致错误的循环代码:
console.log(afcHelper_ffuSubmissions.length); // just for debugging, returns the correct number
for (var i = 0; i < afcHelper_ffuSubmissions.length; i++) { // this whole section works fine
var sub = afcHelper_ffuSubmissions[i];
//console.log("THIS IS BROKEN DOWN BY LINK",afcHelper_Submissions[i]);
if (pagetext.indexOf(afcHelper_ffuSections[sub.section]) == -1) {
// Someone has modified the section in the mean time. Skip.
document.getElementById('afcHelper_status').innerHTML += '<li>Skipping ' + sub.title + ': Cannot find section. Perhaps it was modified in the mean time?</li>';
continue;
}
var text = afcHelper_ffuSections[sub.section];
var startindex = pagetext.indexOf(afcHelper_ffuSections[sub.section]);
var endindex = startindex + text.length;
console.log(sub);
if (typeof(sub.from) != 'undefined' && sub.from.length > 0) { // ** problem spot?? this is the code i recently added.
for (var i = 0; i < sub.from.length; i++) {
mainid = sub.from[i]['id'];
var sub = afcHelper_Submissions[mainid]; // and then it goes on from here...
任何想法都会很棒。 坦率地说,我只是不明白为什么我会收到关于我已经明确检查过 ( typeof(sub.from)
) 类型的东西的TypeError
......
我不确定您如何只检查某些内容是否未定义,同时收到未定义的错误。 你使用的是什么浏览器?
您可以通过以下方式进行检查(额外=并使长度成为真实的评估)
if (typeof(sub.from) !== 'undefined' && sub.from.length) {
[更新]
我看到您重置 sub 从而重置 sub.from 但无法重新检查 sub.from 是否存在:
for (var i = 0; i < sub.from.length; i++) {//<== assuming sub.from.exist
mainid = sub.from[i]['id'];
var sub = afcHelper_Submissions[mainid]; // <== re setting sub
我的猜测是错误不在 if 语句上,而是在for(i...
语句上。在 Firebug 中,您可以在出现错误时自动中断,我猜它会在该行上中断(而不是在 if 语句上)。
'undefined'是一个字符串,对象可能不等于......但是,如果你使用undefined而不带引号,那么它就是一个关键字。
所以,是的,它不等于字符串'undefined',但是当你去使用它时,它确实是未定义的。
如果您想为对象分配值并且它以角度显示此错误,请尝试此操作。
构造函数中的 crate 对象
this.modelObj = new Model();
//<----------- 在上面声明对象之后
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.