3

Sublime Text 2 に JSLint プラグインをインストールしました。しかし、JSLint によって課されたいくつかのルール、特にループ内での変数の宣言に関するこのエラーに同意しません。

Move 'var' declarations to the top of the function.
    for (var i = 0; i < 100; i++) { // Line 12, Pos 10

私の質問は、Sublime Text 2 の JSLint でこのルールをオーバーライドまたは無効にする方法です。

4

2 に答える 2

3

Darren DeRidder のプラグイン(Sublime Text 用に 2 つの JSLint プラグインがあります) がある場合は、次のようにします

プリファレンス -> パッケージ設定 -> jslint -> 高度なビルド設定で、任意の jslint のオプションを設定できます。JSLint のオプションのリストについては、http: //www.jslint.com/lint.html#optionsを参照 してください。

これで、ループ内の var 宣言だけを無効にするのに苦労することになります。このvars オプションを true にすることもできますが、JSLint を使用すると、ページのどこにでも好きなだけ var 宣言を含めることができます。JavaScript にはFunction Scopeと呼ばれるものがあり、そのスコープの先頭に宣言を「ホイスト」するため、これは誤解を招く可能性があります。

編集:うわ、私はうそをつきました。 vars複数の var 宣言ステートメントのみが許可されますが、それらは関数の先頭にある必要があります。これを行うことのみが許可されます:

function fnTest() {
  var i;
  var j;  // Oh boy! Two var statements at the TOP of the same function
  for (i = 0; i < 100; i++) {
    j++;
  }
}

そしてそうではない

function fnTest() {
  var j;
  for (var i = 0; i < 100; i++) { // still can't do this.
    j++;
  }
}

Crockford がこれを許可していないことに驚いていますが、あなたは運が悪く、代わりにJSHintを使用する必要があると思います (私は使用していませんが、JSHint 用の Sublime プラグインがここにあるようです)。

于 2013-05-03T22:00:53.107 に答える