1. ホーム
  2. javascript

[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?

2022-03-14 08:20:35

質問

最近、私は自分のJavaScriptコードの一部をCrockfordの JSLint で、以下のようなエラーが出ました。

1 行目の文字 1 に問題があります: "use strict" 文がありません。

いろいろ検索していると、ある人は "use strict"; をJavaScriptのコードに追加しました。この記述を追加したら、エラーは出なくなった。残念ながら、この文字列の記述にまつわる経緯は、Googleではあまり明らかにされていない。確かに、JavaScriptがブラウザによってどのように解釈されるかと関係があるに違いないが、どのような効果があるのか見当もつかないのである。

では、何が "use strict"; それは何を意味するのか、そして今でも有効なのか。

現在のブラウザのどれかが "use strict"; それとも将来的なものですか?

解決方法は?

ES6モジュールのアップデート

内部 ネイティブECMAScriptモジュール (を使用)。 import export ステートメント)と ES6クラス 厳密モードは常に有効であり、無効にすることはできません。

オリジナル回答

Javascript Strict Modeについては、こちらの記事が参考になると思います。 John Resig - ECMAScript 5 Strict Mode、JSON、およびその他。

興味深い部分を引用します。

Strict Mode は ECMAScript 5 の新機能で、プログラムまたは関数を "strict" 操作コンテキストに配置することができます。このストリクトコンテキストは、特定のアクションの実行を阻止し、より多くの例外をスローします。

そして

ストリクトモードは、いくつかの点で役に立ちます。

  • よくあるコーディングの失敗をキャッチし、例外をスローします。
  • 比較的安全でない行為(グローバルオブジェクトへのアクセスなど)が行われた場合、それを防止したり、エラーを投げたりします。
  • 混乱を招くような機能や、考え抜かれた機能を無効にします。

また、ファイル全体に"strict mode"を適用することができることにも注意してください... あるいは、特定の関数にのみ使用することもできます。 (やはりJohn Resigの記事から引用) :

// Non-strict code...

(function(){
  "use strict";

  // Define your library strictly...
})();

// Non-strict code...

これは、古いコードと新しいコードを混在させなければならない場合に役立つかもしれません ;-)

ということで、少しは "use strict" Perlで使用できる (だからこの名前なのか?) というのも、このツールは、破損につながる可能性のあるものをより多く検出することで、エラーを減らすのに役立つからです。

ストリクトモードが すべての主要なブラウザでサポートされています。 .