console.log没有参数?这是如何运作的?

时间:2016-05-25 05:37:14

标签: javascript node.js

可能是一个非常基本的问题,但我没有在文档或Google中找到答案......

我正在做nodeschool's“learnyounode”模块,并且对于http客户端问题的介绍找到了一个使用console.log而没有参数的正式答案(实际上是另一个函数中的args,但我理解):

var http = require('http')

http.get(process.argv[2], function (response) {
      response.setEncoding('utf8')
      response.on('data', console.log)
      response.on('error', console.error)
  })

这是如何工作的?它看起来干净而且显而易见,但我不确定如果不能更好地了解正在发生的事情,我可以自信地使用这种风格。

顺便说一下(看看我不理解的东西),这是我自己非常相似但更长的答案:

var http = require('http');

http.get(process.argv[2], function callback(response) {
    response.setEncoding('utf8');
    response.on('data', function(data) {
        console.log(data);
    });
    response.on('error', function(error) {
        console.error(error);
    });
});

1 个答案:

答案 0 :(得分:2)

看看你的代码非常简单

response.on('error', function(error) { 
    console.error(error); 
});

你在那里做了什么,你写了一个回调,它从错误事件中传递了对象,你可以将其用作错误。

现在让我们看看其他代码

response.on('error', console.error)

同样的情况是,事件将它的对象传递给回调函数,此函数console.error在这里需要一个或多个对象。

类似

let myLog = function(dataToLog) {
    console.log(dataToLog);
}

response.on('error', myLog);

也会奏效,希望这会让它更清晰。

相关问题