【发布时间】:2021-09-05 06:39:23
【问题描述】:
我不知道为什么,但我在运行以下代码时总是收到错误消息:
function list(names) {
let str = '';
if (!names) {
return ''
} else if (names.length == 2) {
return names[0].name + ' & ' + names[1].name;
} else if (names.length == 1) {
return names[0].name;
} else {
for (i = 0; i < (names.length - 2); i++) {
str += names[i].name + ', ';
}
str += names[names.length - 2].name + ' & ' + names[names.length - 1].name;
return str;
}
}
在codewars kata 中有测试用例。 错误是:
TypeError: Cannot read property 'name' of undefined
at list
at /home/codewarrior/index.js:36:19
at /runner/frameworks/javascript/cw-2.js:152:11
at Promise._execute
names 应该是一个可以为空的数组,并且数组元素是具有名称属性的对象。
【问题讨论】:
-
它甚至会在哪里抛出该错误?输入是什么?
-
与 python 不同,在 javascript 中空数组是真实的,所以
if(!names)不是检查空列表的正确方法。 -
如果 names.length 为 0 怎么办。也检查一下。
-
是测试用例,我加代码
-
是的,现在我明白了。 @georg 和 Tushar Shafi 是正确的。谢谢 ! ??????
标签: javascript arrays typeerror