Javascript:如何使用预期参数传递回调

Javascript:如何使用预期参数传递回调,javascript,Javascript,我想在2秒钟后将我选择的字符串打印到控制台。 这会在2秒钟后将'Hello'打印到控制台: function log() { console.log("Hello") } t = setTimeout(log, 2000) function log(st) { console.log(st) } t = setTimeout(log("myChoice"),2000) 但我没有选择打印哪个字符串。它是在函数中硬编码的 下一位代码会将'myChoice'打印到控制台,但它会立即打印

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

这会在2秒钟后将
'Hello'
打印到控制台:

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

t = setTimeout(log, 2000)
function log(st) {
  console.log(st)
}

t = setTimeout(log("myChoice"),2000)
但我没有选择打印哪个字符串。它是在函数中硬编码的

下一位代码会将
'myChoice'
打印到控制台,但它会立即打印,而不是等待2秒钟:

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

t = setTimeout(log, 2000)
function log(st) {
  console.log(st)
}

t = setTimeout(log("myChoice"),2000)
这是因为,据我所知,setTimeout希望我为它提供一个函数

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

注释

  • 实际上,我并不关心在2秒钟后记录东西。这是一个关于如何告诉javascript调用函数时要使用哪些参数的更一般问题的原型问题
  • 附加问题:我怎样才能更好地表达我的问题标题?“回调”这个词在这里用得对吗
编辑: 有些人将此标记为重复,事实上,问题标题与。但是,另一个问题的主体似乎已经确定了解决问题的特定方法的所有答案,即使用中间函数。
我认为我在这里得到的答案是给定问题标题的最佳答案。

setTimeout
接受函数作为参数:

setTimeout(() => log("myChoice"), 2000)

也许是织物功能

函数日志(str){
console.log(str)
}
//作为fn函数,下一个参数
//任意数量的args
函数传递参数(fn,…参数){
return()=>{
fn(…args)
}
}
t=设置超时(通过参数(日志,“我的参数”),2000)

提示:
log(“myChoice”)
不是一个函数。它是执行后函数日志的返回值。log是一个函数,但它需要一个参数。因此,Clarity的回答是,一个很好的解决方案是让函数不需要参数,而是使用正确的参数调用log twi。这是完美的。事实上,我已经看到并使用了很多
()=>符号,但没有真正理解。有没有提到它的名字或完整的解释?你是说箭头功能?也许这有助于: