什么是用 .then(console.log) 调用替换 .then(data => console.log(data)) ?

Vac*_*cek 2 javascript

我在 React 应用程序中看到了以下代码。

getData()
        .then(res => res.json())
        .then(console.log)
Run Code Online (Sandbox Code Playgroud)

它的行为与我使用的完全相同

getAllStudents()
        .then(res => res.json())
        .then(data => console.log(data))
Run Code Online (Sandbox Code Playgroud)

因此,在第一个示例中,被调用的函数console.log以某种方式隐式知道它应该将数据作为参数并将其显示在控制台中。该函数甚至没有被调用console.log()

你能告诉我这个快捷方式概念叫什么吗?我想了解更多有关它的信息,但我不知道应该如何使用它。

And*_*din 5

这被称为“点自由风格”或隐性编程。

参见例如https://en.wikipedia.org/wiki/Tacit_programming

编辑:上面的情况可能不完全是默认编程,因为这涉及定义函数而不明确提及它们的参数(“默认”=“隐式”),而这里您只是使用已经定义的函数作为参数。但是函数定义

const log = console.log
Run Code Online (Sandbox Code Playgroud)

将是一个默认函数,而不是

const log = data => console.log(data)
Run Code Online (Sandbox Code Playgroud)

所以这个概念至少与问题的差异密切相关。

  • “你能告诉我这个快捷方式的概念叫什么吗?”如果问题是它叫什么,那么这个答案对我来说似乎很准确。 (2认同)