在做这道题的时候,我实现的题中最后一个函数 nth 的返回结果总是 undefined ,明明在即将返回值的地方打 log 输出的都是正确的值。
代码如下:
function arrayToList(para) {
if (para[0] !== undefined) {
var list = {
value: para[0],
rest: null
};
for (var i = 1, j = list;
i < para.length; ++i , j = j.rest) {
j.rest = {
value: para[i],
rest: null
};
}
return list;
}
}
function nth(list, n) {
if (list !== undefined || list !== null) {
if (n === 0) {
// 此处打 log 结果依然为 list.value 的值
return list.value;
}
else {
nth(list.rest, --n);
}
}
}
console.log(nth(arrayToList([10, 20, 30]), 1)); //此处输出为 undefined
1
binux 2016-09-10 02:34:45 +08:00 1
```
else { return nth(list.rest, --n); } ``` |
3
littlepanzh 2016-09-10 12:48:41 +08:00 via iPhone
我读书少……
if (list !== undefined || list !== null) 这个 if 有什么卵用吗? |
4
tyfulcrum OP @littlepanzh 原意是怕传进来的不是预期的类型导致运行时错误。请问这种情况是用 try catch 更好么?我初学不知道动态类型语言在这种情况下的惯例。
|
5
littlepanzh 2016-09-10 19:19:02 +08:00
@tyfulcrum 应该用&&不是||,你这个 if 什么条件都会进去的,根本起不到任何作用。
|