私は文を含める:
"use strict";
私のJavascriptファイルのほとんどの冒頭に。
JSLintはこれについて一度も警告していません。しかし今では、
関数形式 "use strict"を使用してください。
「関数形式」がどうなるか誰かが知っていますか?
ラッピング関数の最初のステートメントとして'use strict';
を含めるので、その関数にのみ影響します。これは厳密ではないスクリプトを連結するときの問題を防ぎます。
Douglas Crockfordによる最新のブログ投稿 厳密モードが街にやってくる を参照してください。
その投稿からの例:
(function () {
'use strict';
// this function is strict...
}());
(function () {
// but this function is sloppy...
}());
更新: もしあなたが即時関数をラップしたくない場合(例えばそれがノードモジュールである場合)、あなたは警告を無効にすることができます。
JSLint ( Zhami ごと):
/*jslint node: true */
JSHint の場合:
/*jshint strict:false */
または( Laith Shadeed ごと)
/* jshint -W097 */
JSHintからの任意の警告を無効にするには、 JSHintソースコード (詳細は docs )のマップを確認してください。
更新2: JSHint はnode:boolean
オプションをサポートします。 githubの.jshintrc
を参照してください。
/* jshint node: true */
NodeJS用のモジュールを書いているのなら、それらはすでにカプセル化されています。ファイルの先頭にインクルードしてnodeがあることをJSLintに伝えます。
/*jslint node: true */
代わりに jshint を使用することをお勧めします。
/*jshint globalstrict: true*/
を介してこの警告を抑制することができます。
もしあなたがライブラリを書いているのであれば、nodejsのようにあなたのコードがモジュールにカプセル化されている場合にのみglobal strictを使うことをお勧めします。
そうでなければ、あなたはあなたのライブラリーを使用している人全員を厳密モードに強制します。
Cross Platform JavaScript ブログ投稿に従ってNode.js/browserifyアプリケーションの作成を始めました。私のブランドの新しいGruntfileがjshintに合格しなかったため、私はこの問題に遭遇しました。
幸いなことに私はGruntの Leanpubの本の中で答えを見つけました :
今すぐ試すと、Gruntfileをスキャンしてエラーが発生します。
$ grunt jshint Running "jshint:all" (jshint) task Linting Gruntfile.js...ERROR [L1:C1] W097: Use the function form of "use strict". 'use strict'; Linting Gruntfile.js...ERROR [L3:C1] W117: 'module' is not defined. module.exports = function (grunt) { Warning: Task "jshint:all" failed. Use --force to continue.
どちらのエラーもGruntfileがNodeプログラムであり、デフォルトでJSHintが
module
と文字列バージョンのuse strict
の使用を認識または許可していないためです。 Nodeプログラムを受け付けるJSHintルールを設定できます。 jshintタスク設定を編集してオプションキーを追加しましょう。jshint: { options: { node: true }, }
Jshintを「ノードモード」にするために、jshintのoptions
にnode: true
を追加すると、両方のエラーが削除されました。
文字列形式に本質的に問題のあるものは何もありません。
厳密ではないjavascriptを連結することを心配するために "グローバルな"厳密な形式を避けるのではなく、いまいましい厳密ではないjavascriptを厳密に固定することをお勧めします。
プロジェクトのルートに.jslintrcファイル(またはjshintの場合は.jshintrc)を追加して、次の内容を追加します。
{
"node": true
}
誰もがこの質問の「突然」の部分を見逃したと思います。ほとんどの場合、あなたの.jshintrcには構文エラーがあるので、 'browser'行は含まれていません。エラーがどこにあるか見るためにjsonバリデータを通してそれを実行してください。