コールスタックを重ねてみよう
2007-05-09


どこまで平気なのか!?

先のエントリで、コールスタック数によって警告されるか否かを検証するために、次のようなスクリプトを書いた。

( function(nest) {
        if( --nest <= 0 ) {
                alert( "completed" );
        } else {
                arguments.callee( nest );
        }
} )( 100/* ここでスタック数を調整 */ );
で、ちょろちょろパラメータ変えながら試してたら、やっぱり気になるじゃないですか。「どこまで深くして大丈夫なのか」が。

で、試してみました

手軽に実行できるよう、次のようなブックマークレット形式にしてごにょごにょやってみた。

javascript:(function(nest){if(--nest<=0) {alert("completed");}else{arguments.callee(nest);}})( 100 );
で、いくつかのブラウザでの実行結果は次の通り。 Operaはちょっと挙動が面白く、3332を超えても最後のalertは実行される。が、JavaScriptコンソールを確認するとstack overflowが記録されていた。

知っていたからといって別に役立つわけではないが、なんかの目安になるかな。

[JavaScript]

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット