eslint/no-inner-declarations 細部にこだわる
何を行うか
ネストされたブロック内での変数または関数の宣言を禁止します。
なぜ問題なのか
変数の宣言は、文が置ける場所であればどこでも許可されており、他のブロックの深い部分にまでネストされることがあります。 これは、変数のホイスト(昇格)によって望ましくない場合が多く、宣言をプログラムまたは関数本体のルートに移動させることで、コードの明確性が向上します。 ただし、ブロックスコープのバインディング(let、const)はホイストされないため、このルールの影響を受けません。
例
このルールに対して誤りなコードの例:
javascript
if (test) {
function doSomethingElse() {}
}このルールに対して正しいコードの例:
javascript
function doSomethingElse() {}
if (test) {
// ここにあなたのコードを記述してください
}設定
1 番目のオプション
type: "functions" | "both"
チェックする宣言の種類を決定します。
"functions"
ネストされたブロック内の関数宣言を禁止します。
"both"
ネストされたブロック内の関数および var 宣言を禁止します。
2 番目のオプション
このオプションは以下のプロパティを持つオブジェクトです。
blockScopedFunctions
type: "allow" | "disallow"
"allow"
厳密モード(ES6+ の動作)では、ネストされたブロック内の関数宣言を許可します。
"disallow"
厳密モードの有無に関係なく、ネストされたブロック内の関数宣言を禁止します。
使用方法
設定ファイルまたは CLI でこのルールを有効化するには、次のようにします:
json
{
"rules": {
"no-inner-declarations": "error"
}
}bash
oxlint --deny no-inner-declarations