В приведенном ниже коде я делаю простой запрос get
с node.js и регистрирует ответ на консоль. Это прекрасно работает, но почему? Что происходит в разделе response.on
? Почему console.log
и console.error
работают без каких-либо аргументов?console.log() как обратный вызов в response.on()
var http = require('http')
http.get('http://www.google.com/index.html', function (response) {
response.setEncoding('utf8')
response.on('data', console.log) // <---
response.on('error', console.error) // <---
})
console.log в качестве обратного вызова будет выполняться и передаются данные о событии – Eric
@Eric, где я могу найти, что упомянуто в документации? – shmuli
Если 'console.log' было числом, вы могли бы передать его функции. Возможно, вы бы назвали его 'x' в функции и использовали' x + 5'. Точно так же, когда 'console.log' является функцией, вы все равно можете передать ее другой функции и использовать' x() '. JavaScript имеет [первоклассные функции] (http://helephant.com/2008/08/19/functions-are-first-class-objects-in-javascript/). – Ryan