0

ドキュメントfuncscopeのオプションの説明に基づいて、JSHint は、制御構造などの「意図したスコープ」で宣言されている変数の有用性を認識しているようです (実際には、JS の関数内にはスコープが 1 つしかありません)。

では、なぜi複数回宣言されていると言って、次のエラーが発生するのでしょうか?

if (condition) {
    var i = 1;
    //
}
else {
    var i = 2;
    //
}

funcscopetrue または false に設定しても役に立ちません。このエラーを抑制する方法はありますか?

(「論理的/意図的な」変数スコープを持ち、必要な場所にできるだけ近い変数を「定義」するのが好きです。コードチャンクを移動する必要がある場合に役立ちます。

編集:変数巻き上げについて知っています。varしかし、関数の先頭ですべての s を宣言するという Douglas Crockford の見解には同意しません。これにより、コードが読みにくくなり、コード スニペットを移動する必要がある場合のリファクタリングも難しくなります。funcscopeJSHint ホームページでのドキュメントを読むと、意図されたスコープについても説明されています。これは、まさに私が言及しているものでもあります。この文脈で質問しています)

4

2 に答える 2

1

それは間違っている。あなたのコードは次のように書くのと同じです:

var i;
var i; // duplicate!

if (condition) {
    i = 1;
} else {
    i = 2;
}

ご覧のとおり、i2 回定義しています。それを抑制するフラグがあるとは思わない。

于 2013-03-25T19:55:32.217 に答える