無名関数にはその名の通り名前がないので関数名で呼び出すことができませんが、arguments オブジェクトの callee プロパティを使うことで自分自身を再帰的に呼び出すことができます。
下記はid「target」が指定されている要素にsaitamaという文字列を1秒ごとに延々と表示し続けるコードです。setTimeout に渡す関数オブジェクトを arguments.callee とすることで自分自身の関数名を書かずに示すことができます。
setTimeout メソッドについてはこちらの記事でも以前紹介しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<html> <head> <meta charset="UTF-8" /> <script type="text/javascript"> window.onload = function(){ var hoge = function(){ document.getElementById('target').innerHTML += 'saitama<br />'; setTimeout(arguments.callee, 1000); } hoge(); } </script> </head> <body> <div id="target"></div> </body> </html> |
関数名を直接書くことを避けられれば、その部品の汎用性を上げることができそうです。