【发布时间】:2014-10-24 14:13:44
【问题描述】:
我正在做本书中的一个练习Eloquent JavaScript (see 'a list' at bottom of linked page)。基本上,我想创建一个对象,它接受一个数组并将其转换为具有以下结构的列表:
var list = {
value: 1,
rest: {
value: 2,
rest: {
value: 3,
rest: null
}
}
};
当我在控制台中运行下面的代码时,我得到TypeError: Cannot read property 'length' of undefined (line 3 in function arrayToList)。为什么我调用 .length 的数组没有定义?
function arrayToList(array){
var list = {};
if(!array.length){
list.value = null;
}
else{
list.value = array.shift();
list.rest = arrayToList();
}
return list;
}
console.log(arrayToList([10, 20]));
注意: Stack Overflow 问题 List data structures in JavaScript 是关于同一问题的非常相似的帖子。我在这里寻找的不是解决方案,而是对递归调用中出现问题的解释。
【问题讨论】:
-
一个想法:函数 arrayToList() 需要一个数组作为参数。在递归调用中,它没有得到那个参数......
-
尝试在调试器中跟踪函数。
-
请注意,错误并不是说
.length是未定义的。
标签: javascript arrays recursion