回答:
'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 */
-1
/*jshint strict:false */
、あなたがしていることをより明確にすることです(私が知らない数値コードに特定の利点がない限り)
"use strict";
ファイルごとに1回指定するだけで済みます。
代わりにjshintを使用することをお勧めします。
これにより、この警告を抑制することができます/*jshint globalstrict: true*/
。
ライブラリを作成している場合、nodejsの場合のようにコードがモジュールにカプセル化されている場合にのみ、グローバルストリクトを使用することをお勧めします。
それ以外の場合は、ライブラリを使用しているすべてのユーザーを強制モードに強制します。
strict: 'global'
今すぐ試して、jshint.com / docs / options
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を「ノードモード」にするnode: true
ためにjshint options
に追加すると、両方のエラーが削除されました。
これは非常に簡単です。すべてのコードを厳密にしたい場合"use strict";
は、JavaScriptの最初に追加します。
ただし、一部のコードのみを厳密にしたい場合は、関数形式を使用します。とにかく、JavaScriptの最初に使用することをお勧めします。これにより、より優れたコーダーになるのに役立ちます。
"use strict";
は、JSファイルの先頭に置くだけなので、これが完全に当てはまるとは限りません。
"use strict";
。これは、コードの先頭に配置されるだけです。"use strict;"
関数にラップされている場合にのみ許可されます。(ただし、JS_Hint_ではグローバルフォームを使用できます-必要な設定については上記の回答を参照してください)。