7.3Functions / In Blocks

ブロック内での関数宣言

`if`や`while`などの非関数ブロック内で関数を宣言しないでください。代わりに変数に関数を代入します。

ブロック内での関数宣言は、ECMAScriptの仕様では厳密には許可されておらず、ブラウザや環境によって解釈が異なるため、予期せぬ動作を引き起こす可能性があります。条件に応じて関数を定義したい場合は、ブロックスコープを持つ `let` や `const` を使って変数に関数式を代入するのが安全で一貫性のある方法です。

❌ Bad
// bad
if (currentUser) {
  function test() {
    console.log('Nope.');
  }
}
✅ Good
// good
let test;
if (currentUser) {
  test = () => {
    console.log('Yup.');
  };
}