鍍金池/ 問(wèn)答/HTML/ JS中setTimeout函數(shù)中的時(shí)間失效,什么原因?

JS中setTimeout函數(shù)中的時(shí)間失效,什么原因?

代碼如下:

clipboard.png

這段代碼執(zhí)行,達(dá)不到預(yù)期的效果。func不會(huì)等待1秒執(zhí)行,而是立即執(zhí)行。

把標(biāo)注部分由:func(node)改為function() {func(node)}

則會(huì)按照預(yù)期等待1秒執(zhí)行。

為什么呢,比較迷惑。

回答
編輯回答
苦妄

沒(méi)有為啥,因?yàn)槟?code>func(node)直接調(diào)用了func。
頭一個(gè)參數(shù)讓傳的也是個(gè)函數(shù),而不是函數(shù)的調(diào)用。
什么是回調(diào)函數(shù),就是不是你調(diào)用的卻執(zhí)行了的函數(shù),就是不需要你主動(dòng)調(diào)用。

function fun () {
  console.log(1)
  return function () {
    console.log(2)
  }
}
setTimeout(fun(), 1000)
自己看下結(jié)果
2017年9月22日 02:40
編輯回答
情殺
setTimeout(func(node), 1000);

改成

setTimeout(function() {
  func(node);
}, 1000);

就行了。
至于原因一樓已經(jīng)說(shuō)清楚了。

2017年10月8日 09:52