【发布时间】:2015-04-07 18:55:45
【问题描述】:
我想知道当我将两个 if 条件组合在一起时,为什么控制台会显示“无法读取未定义的属性 'length'”?
//After two if's combined by &&:
for(n= 0, len=i.length; n<len; n++) {
if(typeof n[i] !== 'string' && n[i].length > longest.length)
longest = n[i];
}
// Before I combine two if's:
for(n= 0, len=i.length; n<len; n++) {
if(typeof n[i] !== 'string') continue;
if(n[i].length > longest.length) longest = n[i];
}
【问题讨论】:
-
检查你的变量命名。您正在使用
n就像同时是一个数组/字符串和一个数字。 -
你的两个版本在做完全不同的事情。如果
n[i]不是字符串,第一个比较长度。只有当它是一个字符串时,第二个才会这样做。但是n[i]将永远是undefined,因为数字不是数组。我认为您的意思是使用i[n],其中i是一个可能包含一些字符串的数组。 -
在第一个条件下,如果 n 为零,n[i].length 是多少?
标签: javascript arrays if-statement operators