我想學習D3,我很難理解匿名函數。D3 JS F傳遞給匿名函數的含義是什麼?
在下面的例子中,在函數底部有一個函數(f),它返回的參數爲f(我認爲它本身是有問題的,因爲「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沒有嚴格關係,但總的來說,你可能想看看[什麼是閉包](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work)和怎麼運行的。確保你明白當函數返回接受參數的另一個函數時會發生什麼,就像在這種情況下一樣。 – Nobita
@Nobita它特定於'D3',因爲它歸結爲'd3.scale.quantile'函數返回一個函數,在動畫持續時間內'f'將在0和1之間。那'interpolate'變量就會把數字轉換成合適的範圍。 – Ian