Я пытаюсь узнать D3, и мне трудно понять анонимные функции.D3 JS Что означает значение F, переданное анонимной функции?
В следующем примере в нижней части функции (f) возвращается значение, которое возвращает переменную «интерполировать» с параметром f (который, по моему мнению, является akward, поскольку «интерполяция» не является функцией, переменная).
Но в чем смысл 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 в общем, вы можете взглянуть на [что за закрытие] (http://stackoverflow.com/questions/111102/how-do-javascript-closures-work) и как это работает. Убедитесь, что вы понимаете, что происходит, когда функция возвращает другую функцию, которая принимает параметр., Как в этом случае. – Nobita
@Nobita Он специфичен для 'D3', так как все сводится к тому, что' d3.scale.quantile' возвращает функцию, для которой 'f' будет находиться между 0 и 1 в течение всего анимации. Тогда переменная 'interpolate' преобразует числа в соответствующий диапазон. – Ian