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














