76

作成したこのカウンターがありますが、それを永久に実行したいのですが、それは本当に簡単です。ここで何が間違っていますか?

function timer() {
  console.log("timer!")
}

window.setInterval(timer(), 1000)
4

2 に答える 2

122

setInterval の最初のパラメーターとして、関数参照の代わりに関数呼び出しを使用しました。次のようにします。

function timer() {
  console.log("timer!");
}

window.setInterval(timer, 1000);

またはより短い(ただし、関数が大きくなると読みにくくなります):

window.setInterval( function() {
  console.log("timer!");
}, 1000)
于 2012-04-16T22:40:56.003 に答える
12

setInterval次のようなコールバックで使用するsetTimeout 必要があります。

setInterval(timer, 1000);

または名前のない関数:

setInterval( function() { console.log("timer!"); }, 1000 );

コードが機能しない理由 - 関数を引数として別の関数に角かっこdoSomething ( someFunc() )で渡す場合、たとえば、関数の結果を渡している場合。

関数がオブジェクトとして渡されると、たとえばdoSomething ( someFunc )コールバックが渡されます。この方法someFuncは参照として渡され、呼び出し元の関数のどこかで実行されます。これは、他の言語の関数へのポインタと同じです。

よくある間違いは、w3schoolsで示されているように、これら 2 つの関数を使用することです。これにより、 が暗黙的に呼び出されevalます。

于 2012-04-17T12:52:42.820 に答える