Существует несколько сообщений о функции, возвращающей другую функцию, например 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