setInterval()、setTimeout()は内部的にeval()を使っている(場合もある)
setInterval()
やsetTimeout()
の第1引数に文字列を渡すと、eval()
で実行される。
文字列を渡す構文は推奨されていないが、コードゴルフなどコードを極力短く書きたいときには有効な場合がある。
let i = 0
setInterval('console.log(i++)',100)
> 6 // ← タイマーのID
> 0
> 1
> 2
> ...
関数の代わりに文字列を含める構文も許容されており、 delay ミリ秒が経過するたびに文字列をコンパイルして実行します。 https://developer.mozilla.org/ja/docs/Web/API/setInterval
関数の代わりに文字列を含める代替構文も許容されており、タイマーが満了したときに文字列をコンパイルして実行します。 https://developer.mozilla.org/ja/docs/Web/API/setTimeout