私はD3を学びたいと思っています。私は匿名の機能を理解するのに苦労しています。D3 JS Fの意味が無名関数に渡されましたか?
以下の例では、関数(f)の最後に変数fを持つ変数 "interpolate"を返します( "interpolate"は関数ではないので、変数)。
しかし、Fの意味は?私はそれがどのように「補間」の機能で使用されているのかわかりません。私はFを削除し、単に()を渡すと、私のアニメーションが壊れます。
ありがとうございます! :)
svg.append('path')
.attr('class', 'line')
.attr('d', line(lineData))
.transition()
.duration(3000)
.attrTween('d', pathTween);
function pathTween() {
var interpolate = d3.scale.quantile()
.domain([0,1])
.range(d3.range(0, 7));
return function(f) {
return line(lineData.slice(0, interpolate(f)));
};
}
はあなた 'pathTweenは()' D3に送信された関数を作成します。ある時点で、d3はあなたの関数を呼び出して一つのパラメータ 'f'を渡すことにします。 – Sirko
D3に厳密に関連するものではありませんが、一般的にはJs [closureとは何か](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)と使い方。この場合のように、関数がパラメータを受け入れる別の関数を返すときにどうなるかを理解してください。 – Nobita
@Nobita 'D3'は、' d3.scale.quantile'が関数を返すので、 'f'はアニメーションの持続時間の間0と1の間にあるという事実から始まります。その 'interpolate'変数は、数値を適切な範囲に変換します。 – Ian