我正在从书籍《JavaScript高级程序设计》中进行一项练习(请参见链接页面底部的“列表”)。基本上,我想要创建一个对象,它可以将一个数组转换成以下结构的列表:
var list = {
value: 1,
rest: {
value: 2,
rest: {
value: 3,
rest: null
}
}
};
当我在控制台运行以下代码时,我会得到TypeError: Cannot read property 'length' of undefined (线3中的函数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的问题“JavaScript中的列表数据结构”是关于同一问题的非常类似的帖子。我在这里不是特别在寻找一个解决方案,而更多地是关于递归调用出了什么问题的解释。
.length
未定义。 - ThisSuitIsBlackNot