2020年4月21日火曜日

開発環境

ちょっと気になったから確認してみた。

コード

let i = 1;
try {
    while (true) {
        let a = eval("!".repeat(i) + "true");
        i += 1;
    }
} catch (e) {
    console.log(i, e);
}

入出力結果(Zsh、PowerShell、Terminal)

% node sample.js 
15636 RangeError: Maximum call stack size exceeded
    at Object.<anonymous> (/…/sample.js:4:36)
    at Module._compile (internal/modules/cjs/loader.js:1156:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1176:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47
%

ということで、15635個まで大丈夫みたい。ただ、上記のコードはeval関数を使用した場合だから、ツイートの場合のif文で使用する場合とは結果が違ったりするのかも。

0 コメント:

コメントを投稿