コールスタックを重ねてみよう2007年05月09日 20時35分34秒

どこまで平気なのか!?

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

( 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 );
で、いくつかのブラウザでの実行結果は次の通り。
  • IE7 → 1757
  • Firefox(1.5.0.11、2.0.0.3) → 1000
  • Opera(9.20、8.54) → 3332
Operaはちょっと挙動が面白く、3332を超えても最後のalertは実行される。が、JavaScriptコンソールを確認するとstack overflowが記録されていた。

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

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://dara-j.asablo.jp/blog/2007/05/09/1496964/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。