2009年 03月 18日

JS の再帰 (追試)

http://d.hatena.ne.jp/hagino_3000/20090317/1237219357 を見て名前つけてるかどうかで違うらしいことを知ったので他のブラウザでもテスト

方法は前やった方法です http://subtech.g.hatena.ne.jp/cho45/20071208/1197050774

IE 以外は全て Mac (Tiger memory 2G) 上です。IE7 は memory 2G, IE8 は VirtualPC 上 memory 128MB です。

A

javascript:n=0;(function(){n++;arguments.callee();})();
javascript:alert(n);
Firefox 3.1b3
3000
Safari 3.2.1
500
Opera 9.50 (Build 4870)
9999
IE 7.0.5730.13
1757
IE 8.0.6001.18372
1053


B

javascript:n=0;(function me(){n++;me();})();
javascript:alert(n);

一応やってみたけどこれも同じ結果だった
javascript:n=0;f=(function(){n++;f();});f();
Firefox 3.1b3
3000
Safari 3.2.1
500
Opera 9.50 (Build 4870)
9999
IE 7.0.5730.13
2510
IE 8.0.6001.18372
1451

IE 以外は変わらないみたいですね。なぜか 8 になって減ってるんですがなんなんでしょうか。メモリに影響されたりとかまさかしないですよね…… それにしてもなんで名前つけるかで深さ変わるんだろう

Fx は 3.0 beta のときはものすごい深さ (261503) までいけてましたが、3000 で制限するようにしたっぽいですね。

Opera は小学生みたいでかわいいです。