Ich versuche D3 zu lernen und es fällt mir schwer, die anonymen Funktionen zu verstehen.D3 JS Was bedeutet die Bedeutung von F für die anonyme Funktion?
Im folgenden Beispiel gibt es unten Funktion (f) und es gibt die Variable zurück "interpoliere" mit dem Parameter f (was ich denke, ist selbst akward, da "interpolieren" keine Funktion ist, sondern a Variable).
Aber was ist die Bedeutung von F? Ich sehe nicht, wie oder wo es in der Funktion "interpolieren" verwendet wird. Wenn ich F lösche und passiere(), bricht meine Animation ab.
Dank! :)
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)));
};
}
Ihre 'pathTween()' erzeugt eine Funktion, die auf d3 gesendet wird. Irgendwann entscheidet sich d3 dann, die Funktion aufzurufen und einen Parameter - 'f' - zu übergeben. – Sirko
Nicht im Zusammenhang mit D3, aber Js im Allgemeinen, möchten Sie vielleicht einen Blick auf [was für eine Schließung ist] (http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) und wie es funktioniert. Stellen Sie sicher, dass Sie wissen, was passiert, wenn eine Funktion eine andere Funktion zurückgibt, die einen Parameter akzeptiert, wie in diesem Fall. – Nobita
@Nobita Es ist spezifisch für 'D3', da alles darauf hinausläuft, dass' d3.scale.quantile' eine Funktion zurückgibt, für die 'f' für die Dauer der Animation zwischen 0 und 1 liegt. Diese 'interpolieren' Variable wird dann Zahlen in einen geeigneten Bereich umwandeln. – Ian