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