Javascript:如何传递带有预期参数的回调

Ale*_*are 4 javascript

我想在2秒后将选择的字符串打印到控制台。

'Hello'2秒后将打印到控制台:

function log() {
  console.log("Hello")
}

t = setTimeout(log, 2000)
Run Code Online (Sandbox Code Playgroud)

但是我没有选择打印哪个字符串。它被硬编码在函数中。

接下来的代码确实会打印'myChoice'到控制台,但会立即执行,而不是等待2秒钟:

function log(st) {
  console.log(st)
}

t = setTimeout(log("myChoice"),2000)
Run Code Online (Sandbox Code Playgroud)

据我了解,这是因为setTimeout希望我为其提供函数。

如何将log函数提供给setTimeout并告诉它在运行时希望它使用我提供的任何字符串?

笔记

  • 我实际上不关心2秒钟后的日志记录。这是一个原型问题,适用于我的一般性问题,即如何告诉javascript我希望函数在调用时使用哪些参数。
  • 奖励问题:如何更好地表达我的问题标题?“ callback”在这里是否正确?

编辑:有些人将此标记为重复,并且实际上问题标题与另一个主题几乎相同。但是,另一个问题的主体似乎已经将所有答案锚定为解决问题的特定方式,即使用中间函数。我认为我得到的答案是给出该问题标题的最佳答案。

Cla*_*ity 6

setTimeout 接受一个函数作为参数:

setTimeout(() => log("myChoice"), 2000)
Run Code Online (Sandbox Code Playgroud)