0
私はEloquent Javascriptを読んでいます。このスクリプトは理解できません。 ここからの値はfromMotherおよびfromFatherからです。 私はstackoverflowの中でこのことについて、検索、私が見つけたが、それは私がこのスクリプトEloquent Javascript anchestry DNAスクリプト
とスクリプトを理解する助けにはならなかった。
byName={};
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);
}
function forEach (array,action) {
for (var i = 0; i < array.length; i++) {
action(array[i]);
}
}
forEach(ANCESTRY_FILE,function (person) {
byName[person.name]=person;
})
function sharedDNA(person, fromMother, fromFather) {
if (person.name == "Pauwels van Haverbeke")
return 1;
else
return (fromMother + fromFather)/2;
}
var ph = byName["Philibert Haverbeke"];
console.log(reduceAncestors(ph, sharedDNA, 0)/4);
私は 'debugger;'と 'console.log()'の文を混在させ、ブラウザコンソールのデバッグモードでステップバイステップで実行することを本当に知りたければ、 - ソースで単一のレコードを使用するのは良い考えかもしれませんが、デバッグ時に混乱は少なくなります。 – Nope
このコードには多数の関数定義が含まれています。例えば 'sharedDNA'は' person'、 'fromMother'、' fromFather'の3つのパラメータを取る関数として定義されています。この関数を呼び出すコードまでは、パラメータの値を決定して関数に渡します。これはコード全体ですか? – tommyO