[JavaScript] ブロック内での関数宣言の問題
ECMAScript(ECMA-262)では、ifやwhileなどのブロック内における関数宣言を認めていない。
if (true) { function doSample() { //... } }
単純な関数内の関数(関数のネスト)はOK。
function doOuter() { function doInner() { //... } }
ブロック内で関数を定義したい場合は、変数に式で代入する。
if (true) { var doSample = function () { //... } }
ただしJavaScriptでは、ブロック内で関数宣言してもほとんど問題ない。
将来的なことを考えて標準(ECMAScript)に準拠しておきたいときのみ注意しよう。