【发布时间】:2017-03-08 03:11:37
【问题描述】:
我的编程“技能”基础正在动摇。我不知道这种行为是由递归、闭包还是其他原因引起的,但这是迄今为止我见过的最奇怪的事情。
我的初衷是用递归来统计dom元素的父母。实现闭包以存储我的计数器,并且递归将为每个不等于 div#wrapper 的父级增加它。它有效 - 一次。对于第一个元素(只有 1 个父元素 - 它返回 1)但是第二次返回未定义。为了测试,我想出了这个装备:
let parents = countParents();
let pathLength = parents(3);
function countParents() {
let counter = 0;
return function nextParent(node) {
let parent = node - 1;
counter++;
if (parent === 1)
return 'WATAFAK';
else
nextParent(parent);
}
}
console.log(pathLength);
其实我是在质疑自己的眼睛(已经很晚了,已经编程了一段时间了),但是这个函数返回 undefined。这怎么可能?
【问题讨论】:
-
else分支中没有返回语句。 -
另外,请用您正在使用的语言标记任何问题。