Иногда я вижу JavaScript, который написан с аргументом, который уже имеет заданное значение или является объектом с методами. Возьмите пример jQuery, например:
$(".selector").children().each(function(i) {
console.log(i);
});
При регистрации i
вы получите значение того, что i
нахожу в этой итерации, когда смотрю на дочерних селекторов в each
методе jQuery.
Возьмите пример Node.js:
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);
Здесь вы можете увидеть, что request
и response
передаются, и они содержат свои собственные методы, на которые можно воздействовать.
Для меня это похоже на передачу функции функции createServer
с двумя аргументами, у которых уже есть методы.
Мой вопрос многогранный:
- Откуда берутся эти аргументы?
- Если это просто анонные функции, как они получают аргументы, которые могут действовать как другие функции?
- Как создать функции, которые могут принимать мои собственные аргументы?
- Использует ли это силу закрытия?