次のコードが、括弧が含まれている場合にスタックオーバーフローが発生する理由について頭を悩ませようとしていますが、括弧が含まれている場合はそうではありません。
関数自体をsetTimeoutの引数として呼び出しており、括弧なしで機能しますが、もちろん、関数を追加すると失敗します。関数の後に()を追加するのは私の直感でした。誰かが私のためにこれを片付けることができることを願っています。パランはいつオプションであり、そうではありませんか?
ケース1:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo(), 2000)
}
// RangeError: Maximum call stack size exceeded
ケース2:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo, 2000)
}
// parens are omitted on foo function and it works.