我正在努力解决 Eloquent JS 中高阶函数章节中的“Great-great-great-great-...”示例。我不明白其中一个函数如何从仅包含祖先数据的对象创建值。以下是功能:
function reduceAncestors(person, f, defaultValue) {
function valueFor(person) {
if (person == null)
return defaultValue;
else
return f(person, valueFor(byName[person.mother]),
valueFor(byName[person.father]));
}
return valueFor(person);
}
Run Code Online (Sandbox Code Playgroud)
和
function sharedDNA(person, fromMother, fromFather) {
if (person.name == "Pauwels van Haverbeke")
return 1;
else
return (fromMother + fromFather) / 2;
}
Run Code Online (Sandbox Code Playgroud)
我不明白 valueFor(byName[person.mother]) 如何从这样的对象生成数值:
"Carolus Haverbeke" : {
"name": "Carolus Haverbeke",
"sex": "m",
"born": 1832,
"died": 1905,
"father": "Carel Haverbeke",
"mother": "Maria van Brussel"}
Run Code Online (Sandbox Code Playgroud) javascript ×1