JSHint オプション

このページの内容は、JSHint プロジェクトリポジトリから取得しています。エラーを見つけた場合は、Issue を作成するか(さらに良いのは)、プルリクエストを送信してください!

強制オプション

true に設定すると、これらのオプションにより JSHint はコードに関する警告をより多く生成します。

bitwise

このオプションは、^(XOR)、|(OR)などのビット演算子の使用を禁止します。ビット演算子は JavaScript プログラムでは非常にまれであり、&&& のタイプミスであることもよくあります。

camelcase
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションを使用すると、すべての変数名に camelCase スタイルまたはアンダースコア付きの UPPER_CASE のいずれかを使用するように強制できます。

curly

このオプションでは、ループと条件文のブロックに常に波括弧を付ける必要があります。JavaScript では、ブロックが 1 つのステートメントのみで構成されている場合、波括弧を省略できます。例:

while (day)
  shuffle();

ただし、状況によっては、バグにつながる可能性があります(sleep() がループの一部であると考えるかもしれませんが、実際にはそうではありません)。

while (day)
  shuffle();
  sleep();
enforceall
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

このオプションは、ユーザーを自動的に新機能に含めることなく維持できません。これにより、JSHint のマイナーバージョンのアップグレード時に予期しない警告/エラーが発生する可能性があります。

このオプションは、JSHint バージョン 2.6.3 で利用可能な最も厳格な JSHint 設定の省略形です。すべての強制オプションを有効にし、そのリリースで定義されたすべての緩和オプションを無効にします。

eqeqeq

このオプションは、==!= の代わりに ===!== の使用を禁止します。前者は比較の前に値を強制変換しようとしますが、予期しない結果につながる可能性があります。後者は強制変換を行わないため、一般的に安全です。JavaScript の型強制について詳しく知りたい場合は、Angus Croll によるTruth, Equality and JavaScript をお勧めします。

es3
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

代わりに esversion: 3 を使用してください。

このオプションは、コードが ECMAScript 3 仕様に準拠する必要があることを JSHint に伝えます。Internet Explorer 6/7/8/9 などの古いブラウザやその他のレガシー JavaScript 環境でプログラムを実行可能にする必要がある場合に、このオプションを使用してください。

es5
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

代わりに esversion: 5 を使用してください。

ECMAScript 5.1 仕様で最初に定義された構文を有効にします。これには、予約済みキーワードをオブジェクトのプロパティとして許可することが含まれます。

esversion

このオプションは、コードが準拠する必要がある ECMAScript のバージョンを指定するために使用されます。次の値のいずれかを想定できます。

  • 3 - Internet Explorer 6/7/8/9 などの古いブラウザやその他のレガシー JavaScript 環境でプログラムを実行可能にする必要がある場合
  • 5 - ECMAScript 5.1 仕様で最初に定義された構文を有効にします。これには、予約済みキーワードをオブジェクトのプロパティとして許可することが含まれます。
  • 6 - コードがECMAScript 6固有の構文を使用していることを JSHint に伝えます。ただし、すべてのブラウザが実装しているわけではありません。
  • 7 - ECMAScript 7で導入された言語機能を有効にします。注目すべき追加事項:べき乗演算子。
  • 8 - ECMAScript 8で導入された言語機能を有効にします。注目すべき追加事項:非同期関数、共有メモリ、アトミック。
  • 9 - ECMAScript 9で導入された言語機能を有効にします。注目すべき追加事項:非同期反復、rest/spread プロパティ、およびさまざまな RegExp 拡張機能。
  • 10 - ECMAScript 10で導入された言語機能を有効にします。注目すべき追加事項:省略可能な catch バインディング。
  • 11 - ECMAScript 11 で導入された言語機能を有効にします。注目すべき追加事項:「export * as ns from 'module'」、import.meta、nullish 合体演算子、BigInt 型、globalThis バインディング、オプションチェーン、および動的インポート。
forin

このオプションでは、すべての for in ループでオブジェクトの項目をフィルター処理する必要があります。for in ステートメントを使用すると、プロトタイプチェーンを介して継承されたものを含む、オブジェクトのプロパティ名のすべてをループ処理できます。この動作により、オブジェクトに予期しない項目が含まれる可能性があるため、例に示すように、一般的に継承されたプロパティを常にフィルター処理する方が安全です。

for (key in obj) {
  if (obj.hasOwnProperty(key)) {
    // We are sure that obj[key] belongs to the object and was not inherited.
  }
}

JavaScript の for in ループについてさらに深く理解するには、Angus Croll によるExploring JavaScript for-in loops を読んでください。

freeze

このオプションは、ArrayDate など、ネイティブオブジェクトのプロトタイプの上書きを禁止します。

// jshint freeze:true
Array.prototype.count = function (value) { return 4; };
// -> Warning: Extending prototype of native object: 'Array'.
futurehostile

このオプションは、将来のバージョンの JavaScript で定義されている識別子の使用に関する警告を有効にします。それらの上書きは、実装されていないコンテキストでは影響しませんが、この方法は、コードベースを新しいバージョンの言語に移行する際に問題を引き起こす可能性があります。

globals

このオプションを使用して、ソースコードで正式に定義されていないグローバル変数のホワイトリストを指定できます。プロジェクト固有のグローバル変数に関する警告を抑制するために、undef オプションと組み合わせて使用するのが最も効果的です。

エントリを true に設定すると、その変数の読み取りと書き込みが可能になります。false に設定すると、JSHint はその変数を読み取り専用と見なします。

共通の JavaScript 環境で定義されているグローバル変数を有効にする省略形として使用される一連のオプションである「環境」オプションも参照してください。

個々のファイル内で globals を構成する方法については、インライン構成を参照してください。

immed
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、括弧で囲まずに即時関数の呼び出しを使用することを禁止します。括弧で囲むことで、コードの読者は式が関数の結果であり、関数自体ではないことを理解するのに役立ちます。

indent
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、コードの特定のタブ幅を設定します。

latedef

このオプションは、定義される前に変数を使用することを禁止します。JavaScript には関数スコープのみがあり、それに加えて、すべての変数は常に関数の一番上に移動(またはホイスティング)されます。この動作は非常に厄介なバグにつながる可能性があるため、明示的に定義された後でのみ変数を使用する方が安全です。

"nofunc" に設定すると、関数宣言を無視できます。

JavaScript のスコープとホイスティングについてさらに深く理解するには、Ben Cherry によるJavaScript Scoping and Hoisting を読んでください。

leanswitch

このオプションは、switch ステートメント内の不要な句を禁止します。例:

switch (x) {
  case 1:
  default:
    z();
}

このような句は技術的には有効ですが、プログラムの動作には影響せず、誤ったリファクタリングを示している可能性があります。

maxcomplexity

このオプションを使用すると、コード全体のサイクロマティック複雑度を制御できます。サイクロマティック複雑度は、プログラムのソースコードを通る線形独立パス数を測定します。Wikipedia のサイクロマティック複雑度について詳しく読むことができます。

maxdepth

このオプションを使用すると、ブロックをどれだけネストさせるかを制御できます。

// jshint maxdepth:2

function main(meaning) {
  var day = true;

  if (meaning === 42) {
    while (day) {
      shuffle();

      if (tired) { // JSHint: Blocks are nested too deeply (3).
          sleep();
      }
    }
  }
}
maxerr

このオプションを使用すると、JSHint が断念する前に生成するエラーの最大数を設定できます。デフォルトは 50 です。

maxlen
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションを使用すると、行の最大長を設定できます。

maxparams

このオプションを使用すると、関数ごとに許可される正式パラメーターの最大数を設定できます。

// jshint maxparams:3

function login(request, onSuccess) {
  // ...
}

// JSHint: Too many parameters per function (4).
function logout(request, isManual, whereAmI, onSuccess) {
  // ...
}
maxstatements

このオプションを使用すると、関数ごとに許可されるステートメントの最大数を設定できます。

// jshint maxstatements:4

function main() {
  var i = 0;
  var j = 0;

  // Function declarations count as one statement. Their bodies
  // don't get taken into account for the outer function.
  function inner() {
    var i2 = 1;
    var j2 = 1;

    return i2 + j2;
  }

  j = i + j;
  return j; // JSHint: Too many statements per function. (5)
}
newcap
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションでは、コンストラクター関数の名前を大文字にする必要があります。new 演算子で使用することを目的とした関数を大文字にすることは、単なる慣習であり、プログラマーがコンストラクター関数を他の種類の関数と視覚的に区別し、this を使用した際のミスを見つけるのに役立ちます。

そうしないと、ブラウザや環境でコードが壊れることはありませんが、コードを読むことで関数が new と共に使用される予定だったのか、そうでないのかを判断するのが少し難しくなります。これは重要です。なぜなら、new と共に使用されることを意図した関数が new なしで使用されると、this は新しいオブジェクトではなくグローバルオブジェクトを指すようになるためです。

noarg

このオプションは、arguments.callerarguments.callee の使用を禁止します。.caller.callee はどちらも多くの最適化を不可能にするため、将来のバージョンの JavaScript で非推奨となりました。実際、ECMAScript 5 は厳格モードで arguments.callee の使用を禁止しています。

nocomma

このオプションは、カンマ演算子の使用を禁止します。誤用すると、カンマ演算子はステートメントの値を曖昧にし、間違ったコードを促進する可能性があります。

noempty
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、コードに空のブロックがある場合に警告します。JSLint はもともとすべての空のブロックに対して警告を出していましたが、単にオプションにしました。JavaScript で空のブロックがコードを何らかの方法で壊すという報告はありませんでした。

nonbsp

このオプションは、「改行しない空白」文字について警告します。これらの文字は、Mac コンピューターで option-space を使用して入力でき、UTF8 以外の Web ページを壊す可能性があります。

nonew

このオプションは、副作用のためにコンストラクター関数を使用することを禁止します。一部の人は、その結果を変数に代入せずにコンストラクター関数を呼び出すのが好きです。

new MyConstructor();

MyConstructor を単純に呼び出すことよりもこの方法に利点はありません。なぜなら、new 演算子が作成するオブジェクトはどこにも使用されていないため、一般的にこのようなコンストラクターは避けるべきです。

noreturnawait

非同期関数は、戻り値で解決します。ほとんどの場合、AwaitExpression(それ自体が Promise インスタンス)の結果を返すことは不要です。明確にするために、非同期操作の結果を直接返す方が好ましいことがよくあります。注目すべき例外は、TryStatement の try 句内です。詳細は、「await vs return vs return await」を参照してください。

https://jakearchibald.com/2017/await-vs-return-vs-return-await/

predef

このオプションを使用すると、JSHint が環境で暗黙的に定義されていると見なす変数を制御できます。文字列値の配列で構成します。変数名の前にハイフン (-) 文字を付けることで、事前定義された変数の集合からその名前を削除できます。

JSHint は、このように宣言された変数を読み取り専用と見なします。

このオプションはインラインで指定できません。JavaScript API または外部設定ファイルからのみ使用できます。

quotmark
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、コード全体で使用される引用符の一貫性を強制します。3 つの値を受け入れます。特定のスタイルを強制したくないが、ある程度の一貫性を求める場合は true、単一引用符のみを許可する場合は "single"、二重引用符のみを許可する場合は "double" です。

regexpu

このオプションは、「u」フラグを含まない正規表現に関する警告を有効にします。「u」フラグは Unicode のサポートを拡張し、より厳格な構文解析ルールも有効にします。JSHint は、「u」フラグをサポートしていない JavaScript エンジンで実行されている場合でも、これらのルールを強制します。

shadow

このオプションは、変数のシャドーイング(つまり、外側のスコープで既に宣言されている変数を宣言すること)に関する警告を抑制します。

  • "inner" - 同じスコープで定義された変数のみをチェックします。
  • "outer" - 外側のスコープで定義された変数もチェックします。
  • false - inner と同じです。
  • true - 変数のシャドーイングを許可します。
singleGroups

このオプションは、厳密に必要でない場合にグルーピング演算子の使用を禁止します。このような使用法は一般的に、単項演算子の誤解を反映しています。例えば

// jshint singleGroups: true

delete(obj.attr); // Warning: Unnecessary grouping operator.
strict

このオプションは、コードがECMAScript 5の厳格モードで実行されることを要求します。厳格モードは、JavaScriptの制限されたバリアントを選択できる方法です。厳格モードは、エラーを引き起こさなかったJavaScriptのいくつかの落とし穴を、エラーを生成するように変更することで排除します。また、JavaScriptエンジンが特定の最適化を実行することを困難にした間違いも修正します。

  • "global" - グローバルレベルに"use strict";ディレクティブが必要です。
  • "implied" - "use strict";ディレクティブが存在するかのようにコードをlintします。
  • false - 厳格モードに関する警告を無効にします。
  • true - 関数レベルに"use strict";ディレクティブが必要です。
            this is preferable for scripts intended to be loaded in web
            browsers directly because enabling strict mode globally
            could adversely effect other scripts running on the same
            page
    
trailingcomma

このオプションは、配列またはオブジェクトリテラルの最後の要素の後にコンマが配置されていない場合に警告します。古いバージョンのIEのバグのため、以前は末尾のコンマは推奨されていませんでしたが、ES5以降、そのセマンティクスは標準化されました。(#11.1.4#11.1.5を参照)。現在、これらは、セミコロンの厳格な使用が防止するのに役立つ、同じ視覚的な曖昧性を防ぐのに役立ちます。

例えば、このコードは先週の火曜日に動作したかもしれません。

[
    b + c
].forEach(print);

しかし、配列に要素を追加して、欠落しているコンマを補うことを忘れると、構文エラーは発生せず、リンターはこのミスであるか意図的な関数呼び出しであるかを判断できません。

[
    b + c
    (d + e)
].forEach(print);

リスト項目に常にコンマを付けて追加すれば、この曖昧性は発生しません。

[
    b + c,
].forEach(print);

[
    b + c,
    (d + e),
].forEach(print);
undef

このオプションは、明示的に宣言されていない変数の使用を禁止します。このオプションは、リークしている変数やタイプミスした変数を発見するのに非常に役立ちます。

// jshint undef:true

function test() {
  var myVar = 'Hello, World';
  console.log(myvar); // Oops, typoed here. JSHint with undef will complain
}

変数が別のファイルで定義されている場合は、globalディレクティブを使用してJSHintにそれを知らせます。

unused

このオプションは、定義して一度も使用していない変数がある場合に警告します。特にundefと併用する場合、一般的なコードのクリーンアップに非常に役立ちます。

// jshint unused:true

function test(a, b) {
  var c, d = 2;

  return a + d;
}

test(1, 2);

// Line 3: 'b' was defined but never used.
// Line 4: 'c' was defined but never used.

さらに、このオプションは、globalディレクティブで宣言された使用されていないグローバル変数についても警告します。

trueに設定すると、使用されているパラメーターに続く使用されていないパラメーターは警告を生成しません。このオプションは、関数パラメーターではなく変数のみをチェックするためにvarsに設定するか、すべての変数とパラメーターをチェックするためにstrictに設定できます。

varstmt

trueに設定すると、VariableStatementsの使用が禁止されます。例えば

// jshint varstmt: true

var a; // Warning: `var` declarations are forbidden. Use `let` or `const` instead.

オプションの緩和

trueに設定すると、これらのオプションにより、JSHintはコードに関する警告を少なくします。

asi

このオプションは、セミコロンの欠落に関する警告を抑制します。コミュニティの多くの人々によって、セミコロンに関する多くのFUD(恐怖、不確実性、疑念)が広められています。一般的な誤解としては、セミコロンは常に必要である(そうではない)、そして信頼性が低いということです。JavaScriptにはセミコロンに関するルールがあり、すべてのブラウザによって遵守されているため、コードでセミコロンを使用するかどうかはあなた次第です。

JavaScriptにおけるセミコロンの詳細については、Isaac SchlueterによるAn Open Letter to JavaScript Leaders Regarding SemicolonsJavaScript Semicolon Insertionを参照してください。

boss

このオプションは、比較が期待される場合に代入の使用に関する警告を抑制します。多くの場合、if (a = 10) {}のようなコードはタイプミスです。ただし、このような場合に役立つことがあります。

for (var i = 0, person; person = people[i]; i++) {}

このエラーは、代入を括弧で囲むことで、使用ごとに無効にすることができます。例えば

for (var i = 0, person; (person = people[i]); i++) {}
debug

このオプションは、コード内のdebuggerステートメントに関する警告を抑制します。

elision

このオプションは、コードがES3配列の省略要素、つまり空の要素(例:[1, , , 4, , , 7])を使用していることをJSHintに伝えます。

eqnull

このオプションは、== null比較に関する警告を抑制します。このような比較は、変数がnullまたはundefinedかどうかを確認する場合に役立つことがよくあります。

esnext
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

代わりにesversion: 6を使用してください。

このオプションは、コードがECMAScript 6固有の構文を使用していることをJSHintに伝えます。すべてのブラウザがこれらの機能を実装しているわけではないことに注意してください。

詳細情報

evil

このオプションは、evalの使用に関する警告を抑制します。evalの使用は、コードをさまざまなインジェクション攻撃に対して脆弱にする可能性があり、JavaScriptインタープリターが特定の最適化を実行することを困難にするため、推奨されません。

expr

このオプションは、通常は代入または関数呼び出しが見られる場所に式を使用することについての警告を抑制します。ほとんどの場合、そのようなコードはタイプミスです。しかし、仕様では禁止されておらず、そのためこの警告はオプションです。

funcscope

このオプションは、制御構造内で変数を宣言し、後で外部からアクセスすることについての警告を抑制します。varで宣言された識別子にはグローバルと関数の2つの実際のスコープがありますが、このようなプラクティスは、言語に慣れていない人々の混乱やデバッグが難しいバグにつながります。そのため、デフォルトでは、JSHintは意図したスコープの外で使用されている変数について警告します。

function test() {
  if (true) {
    var x = 0;
  }

  x += 1; // Default: 'x' used out of scope.
            // No warning when funcscope:true
}
globalstrict
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

strict: "global"を使用してください。

このオプションは、グローバルな厳格モードの使用に関する警告を抑制します。グローバルな厳格モードはサードパーティのウィジェットを壊す可能性があるため、推奨されません。

厳格モードの詳細については、strictオプションを参照してください。

iterator

このオプションは、__iterator__プロパティに関する警告を抑制します。このプロパティはすべてのブラウザでサポートされているわけではないため、注意して使用してください。

lastsemic

このオプションは、セミコロンの欠落に関する警告を抑制しますが、1行のブロックの最後のステートメントでセミコロンが省略された場合のみです。

var name = (function() { return 'Anton' }());

これは非常にニッチなユースケースであり、自動JavaScriptコードジェネレーターを使用する場合にのみ役立ちます。

laxbreak
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、コード内の潜在的に安全でない改行に関するほとんどの警告を抑制します。コンマ優先のコーディングスタイルに関する警告は抑制しません。それらを抑制するには、laxcommaを使用する必要があります(下記参照)。

laxcomma
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、コンマ優先のコーディングスタイルに関する警告を抑制します。

var obj = {
    name: 'Anton'
  , handle: 'valueof'
  , role: 'SW Engineer'
};
loopfunc

このオプションは、ループ内の関数に関する警告を抑制します。ループ内で関数を定義すると、このようなバグが発生する可能性があります。

var nums = [];

for (var i = 0; i < 10; i++) {
  nums[i] = function (j) {
    return i + j;
  };
}

nums[0](2); // Prints 12 instead of 2

上記のコードを修正するには、iの値をコピーする必要があります。

var nums = [];

for (var i = 0; i < 10; i++) {
  (function (i) {
    nums[i] = function (j) {
        return i + j;
    };
  }(i));
}
moz

このオプションは、コードがMozilla JavaScript拡張機能を使用していることをJSHintに伝えます。Firefox Webブラウザ用に特に開発していない限り、このオプションは必要ありません。

詳細情報

multistr
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、複数行文字列に関する警告を抑制します。複数行文字列は、誤ってエスケープ文字(\)と改行の間に空白を入れると、あらゆる問題が発生する可能性があるため、JavaScriptでは危険な可能性があります。

このオプションは正しい複数行文字列を許可しますが、エスケープ文字がない複数行文字列、またはエスケープ文字と空白の間に何かがある複数行文字列については、引き続き警告します。

// jshint multistr:true

var text = "Hello\
World"; // All good.

text = "Hello
World"; // Warning, no escape character.

text = "Hello\
World"; // Warning, there is a space after \
notypeof

このオプションは、無効なtypeof演算子の値に関する警告を抑制します。この演算子は、可能な戻り値のセットが限られています。デフォルトでは、JSHintは、その結果を無効な値と比較する場合に警告します。これは多くの場合、タイプミスです。

// 'fuction' instead of 'function'
if (typeof a == "fuction") { // Invalid typeof value 'fuction'
  // ...
}

これらのチェックを絶対的に必要としない場合を除き、このオプションを使用しないでください。

noyield

このオプションは、yieldステートメントのないジェネレーター関数に関する警告を抑制します。

plusplus

このオプションは、単項のインクリメントとデクリメント演算子の使用を禁止します。一部の人は、++--がコーディングスタイルの質を低下させると考えており、Pythonなど、これらの演算子を使用しないプログラミング言語もあります。

proto

このオプションは、__proto__プロパティに関する警告を抑制します。

scripturl

このオプションは、スクリプトを対象としたURL(例:javascript:...)の使用に関する警告を抑制します。

sub
警告 このオプションは非推奨となり、次のメジャーリリースで削除されます。

JSHint はコードの正確性の問題に範囲を限定しています。コードスタイルに関するルールを適用したい場合は、JSCS プロジェクトを確認してください。

このオプションは、ドット表記で表すことができる場合に[]表記を使用することについての警告を抑制します:person['name']person.name

supernew

このオプションは、new function () { ... }new Object;のような「奇妙な」構成に関する警告を抑制します。このような構成は、JavaScriptでシングルトンを生成するために使用されることがあります。

var singleton = new function() {
  var privateVar;

  this.publicMethod  = function () {}
  this.publicMethod2 = function () {}
};
validthis

このオプションは、コードが厳格モードで実行されている場合、およびコンストラクター以外の関数でthisを使用する場合の潜在的な厳格違反に関する警告を抑制します。厳格モードでthisの使用が有効であることを確信している場合(たとえば、Function.callを使用して関数を呼び出す場合)にのみ、このオプションを関数スコープ内で使用してください。

注:このオプションは、関数スコープ内でのみ使用できます。グローバルにこのオプションを設定しようとすると、JSHintはエラーで失敗します。

withstmt

このオプションは、withステートメントの使用に関する警告を抑制します。withステートメントのセマンティクスは、開発者の混乱やグローバル変数の偶発的な定義を引き起こす可能性があります。

詳細情報

環境

これらのオプションにより、JSHintは事前に定義されたグローバル変数について認識します。

browser

このオプションは、最新のブラウザによって公開されるグローバル変数を定義します。古くからのdocumentnavigatorから、HTML5のFileReaderやブラウザ世界の新しい開発に至るまで、あらゆるものを網羅しています。

注:このオプションは、alertconsoleなどの変数を公開しません。詳細については、オプションdevelを参照してください。

browserify

このオプションは、プロジェクトを構築するためにBrowserifyツールを使用する場合に使用できるグローバル変数を定義します。

couch

このオプションは、CouchDBによって公開されるグローバル変数を定義します。CouchDBは、JavaScriptを使用してMapReduce方式でクエリおよびインデックスを作成できる、ドキュメント指向データベースです。

devel

このオプションは、貧弱なデバッグに使用されるログ出力に通常使用されるグローバル変数を定義します:consolealertなど。一般的に、本番環境でこれらを配布しない方が良いでしょう。なぜなら、例えば、console.logはレガシーバージョンのInternet Explorerでは動作しないからです。

dojo

このオプションは、Dojo Toolkitによって公開されるグローバル変数を定義します。

jasmine

このオプションは、Jasmineユニットテストフレームワークによって公開されるグローバル変数を定義します。

jquery

このオプションは、jQuery JavaScriptライブラリによって公開されるグローバル変数を定義します。

mocha

このオプションは、Mochaユニットテストフレームワークの「BDD」および「TDD」UIによって公開されるグローバル変数を定義します。

module

このオプションは、入力コードがECMAScript 6モジュールを記述していることをJSHintに知らせます。すべてのモジュールコードは厳格モードコードとして解釈されます。

mootools

このオプションは、MooTools JavaScriptフレームワークによって公開されるグローバル変数を定義します。

node

このオプションは、コードがNodeランタイム環境内で実行されている場合に使用できるグローバル変数を定義します。Node.jsは、非同期イベント駆動モデルを使用するサーバーサイドJavaScript環境です。このオプションはまた、ブラウザ環境では意味がありますが、Nodeでは意味がない警告(ファイルレベルのuse strictプラグマやconsole.logステートメントなど)をスキップします。

nonstandard

このオプションは、escapeunescapeなど、非標準ですが広く採用されているグローバル変数を定義します。

phantom

このオプションは、コアがPhantomJSランタイム環境内で実行されている場合に利用可能なグローバル変数を定義します。PhantomJSは、JavaScript APIを持つヘッドレスWebKitスクリプティングエンジンです。DOM操作、CSSセレクタ、JSON、Canvas、SVGなど、様々なウェブ標準を高速かつネイティブにサポートしています。

prototypejs

このオプションは、Prototype JavaScriptフレームワークによって公開されるグローバル変数を定義します。

qunit

このオプションは、QUnit単体テストフレームワークによって公開されるグローバル変数を定義します。

rhino

このオプションは、コードがRhinoランタイム環境内で実行されている場合に利用可能なグローバル変数を定義します。Rhinoは、Javaで完全に記述されたJavaScriptのオープンソース実装です。

shelljs

このオプションは、ShellJSライブラリによって公開されるグローバル変数を定義します。

typed

このオプションは、型付き配列コンストラクタのグローバル変数を定義します。

詳細情報

worker

このオプションは、コードがWeb Worker内で実行されている場合に利用可能なグローバル変数を定義します。Web Workersは、ウェブコンテンツがバックグラウンドスレッドでスクリプトを実行するための簡単な手段を提供します。

wsh

このオプションは、コードがWindows Script Hostのスクリプトとして実行されている場合に利用可能なグローバル変数を定義します。

yui

このオプションは、YUI JavaScriptフレームワークによって公開されるグローバル変数を定義します。

不安定なオプション

これらのオプションは、JSHintのメジャーリリース間で変更される可能性のある動作を有効にします。自動化された環境(例:継続的インテグレーション)で有効にする場合は注意してください。

exports.unstable = { }; // これらはJSHintのブール値オプションであり、JSLintと共有されています // JSHintでの定義はJSLintとは逆です exports.inverted = { bitwise

不安定なオプションでは、JavaScript言語への提案された追加の構文解析とリンティングを制御できます。それらが記述する言語機能と同様に、これらのオプションの存在と動作は不安定です。JSHintは、メジャーバージョンリリース間でそれらを削除または変更する権利を留保します。