Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么设置超时';s回调参数可以接受参数_Javascript_Node.js - Fatal编程技术网

Javascript 为什么设置超时';s回调参数可以接受参数

Javascript 为什么设置超时';s回调参数可以接受参数,javascript,node.js,Javascript,Node.js,在nodejs中,为什么我们可以将参数传递给setTimeout的回调函数。 我知道,process.nextTick()作为aspected崩溃,因为它将未定义的值作为函数。 但是,setTimeout()有什么神奇之处呢 通过使用: setTimeout(foo('hello'), 0); 您正在执行foo,并将结果(undefined)传递给setTimeout 这意味着,确切的时刻setTimeout(foo('hello'),0)运行时,将记录“hello”,但不是因为超时已结束 这

在nodejs中,为什么我们可以将参数传递给setTimeout的回调函数。
我知道,
process.nextTick()
作为aspected崩溃,因为它将未定义的值作为函数。
但是,
setTimeout()
有什么神奇之处呢

通过使用:

setTimeout(foo('hello'), 0);
您正在执行
foo
,并将结果(
undefined
)传递给
setTimeout

这意味着,确切的时刻
setTimeout(foo('hello'),0)运行时,将记录“hello”
,但不是因为超时已结束

这是您的代码,但有10秒的延迟。请注意,代码是如何立即发出警报的,而不是在10秒后发出警报的:

foo=函数(a){
警报(a);
}

setTimeout(foo('hello'),10000)setTimeout(foo('hello'),0)
工作正常,它将打印出
hello
@bpceee:我对答案添加了一些额外的解释。感谢您快速准确的回复。似乎是
过程。nextTick
不要检查它的参数是否是函数。@bpceee:的确,似乎是这样。不客气!感谢您接受这个答案:-)
setTimeout(foo('hello'), 0);