私は声明を含めます:
"use strict";
私のJavascriptファイルのほとんどの先頭にあります。
JSLint は、これについて警告したことはありません。しかし今では、次のように言っています。
"use strict" の関数形式を使用します。
「関数形式」が何であるかを知っている人はいますか?
私は声明を含めます:
"use strict";
私のJavascriptファイルのほとんどの先頭にあります。
JSLint は、これについて警告したことはありません。しかし今では、次のように言っています。
"use strict" の関数形式を使用します。
「関数形式」が何であるかを知っている人はいますか?
'use strict';
ラッピング関数の最初のステートメントとして含めるため、その関数にのみ影響します。これにより、厳密ではないスクリプトを連結する際の問題が回避されます。
Douglas Crockford の最新のブログ投稿Strict Mode Is Coming To Town を参照してください。
その投稿の例:
(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
ます。.jshintrc
github で参照してください。
/* jshint node: true */
NodeJS 用のモジュールを作成している場合、それらは既にカプセル化されています。ファイルの先頭に含めることにより、ノードを取得したことを JSLint に伝えます。
/*jslint node: true */
代わりにjshintを使用することをお勧めします。
を介してこの警告を抑制することができます/*jshint globalstrict: true*/
。
ライブラリを作成している場合、nodejs の場合のようにコードがモジュールにカプセル化されている場合にのみグローバルな 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.
module
両方のエラーは、Gruntfile が Node プログラムであり、デフォルトで JSHint がの文字列バージョンを認識または使用できないためですuse strict
。Node プログラムを受け入れる JSHint ルールを設定できます。jshint タスク構成を編集して、オプション キーを追加しましょう。jshint: { options: { node: true }, }
node: true
jshintに追加して、 jshintoptions
を「ノードモード」にすると、両方のエラーが削除されました。
プロジェクトのルートにファイル .jslintrc (jshint の場合は .jshintrc) を次の内容で追加します。
{
"node": true
}
文字列形式に本質的な問題はありません。
非厳密な JavaScript を連結することを心配して「グローバル」な厳密な形式を避けるよりも、いまいましい非厳密な JavaScript を厳密に修正する方がよいでしょう。
process.on('warning', function(e) {
'use strict';
console.warn(e.stack);
});
process.on('uncaughtException', function(e) {
'use strict';
console.warn(e.stack);
});
この行をファイルの開始点に追加します
誰もがこの質問の「突然」の部分を見逃したと思います。ほとんどの場合、.jshintrc に構文エラーがあるため、「browser」行が含まれていません。json バリデーターを実行して、エラーの場所を確認します。
これは非常に簡単です。すべてのコードを厳密にしたい場合"use strict";
は、JavaScriptの先頭に追加してください。
ただし、一部のコードのみを厳密にしたい場合は、関数フォームを使用してください。とにかく、JavaScriptの最初に使用することをお勧めします。これは、より優れたコーダーになるのに役立ちます。