为什么console.log在这种情况下不需要参数?

时间:2017-02-24 19:04:09

标签: javascript es6-promise fetch-api

如果我按如下方式使用Fetch API:

fetch(url)
    .then(response => response.json())
    .then(console.log)

我知道这会记录前一个"然后"的结果。 (响应数据),但为什么console.log在这种情况下不需要任何参数?

这背后是否有任何技术推理或文档,是否可以使用其他任何内置方法?

1 个答案:

答案 0 :(得分:2)

这是简单的Javascript,在这种情况下,console.log需要该参数,这里发生的是then函数将回调作为其第一个参数,并在内部使用由返回的参数执行该回调。最后then功能。所以这意味着你传递console.log函数的引用(或副本,我不确定)而不是直接执行它。

总之,这:

function a (callback) {
  var something = 12345;
  callback(something);
}

a(console.log);

相同
a(function(something) {
  console.log(something);
})