有關函數返回另一個函數的幾個帖子,如this post。但是,當返回的函數包含參數時會發生什麼?使用參數返回函數的Javascript函數
我很困惑,如何調用返回函數,以及從哪裏獲取輸入參數。這是從d3 collision feature.
例如採取一個例子,
force.on("tick", function(e) {
var q = d3.geom.quadtree(nodes), //q is a quadtree factory
i = 0, //counter variable
n = nodes.length; //number of nodes
while (++i < n)
q.visit(collide(nodes[i])); ///////// collide function called here /////////
); });
function collide(node) {
var r = node.radius + 25,
nx1 = node.x - r,
nx2 = node.x + r,
ny1 = node.y - r,
ny2 = node.y + r;
/////// How does the below function work?
/////// Arguments quad, x1, y1, x2, y2 are not passed,
////// but the code works
return function(quad, x1, y1, x2, y2) {
if (quad.point && (quad.point !== node)) {
//do something
}
return x1 > nx2 || x2 < nx1 || y1 > ny2 || y2 < ny1;
};
}
有一些很好的答案已經在這裏,所以我不會認爲,這被關閉。然而,你可能也想看看[這個答案在方法鏈和傳遞匿名函數作爲參數](http://stackoverflow.com/a/21421101/3128209),它涵蓋了許多相同的觀點。 – AmeliaBR 2014-12-13 19:38:52