最近、私はJavaScriptコードをCrockfordのJSLint、次のエラーが発生しました。
1 行目の 1 文字目に問題があります: 「use strict」ステートメントがありません。
調べてみると、"use strict";
JavaScript コードに追加している人がいることが分かりました。このステートメントを追加すると、エラーは表示されなくなりました。残念ながら、Google はこの文字列ステートメントの背後にある歴史をあまり明らかにしませんでした。確かに、JavaScript がブラウザによって解釈される方法と関係があるはずですが、どのような影響があるかはわかりません。
それで、それは"use strict";
一体何なのか、それは何を意味しているのか、そしてそれは今でも関連性があるのだろうか?
現在のブラウザのいずれかがこの"use strict";
文字列に応答しますか、それとも将来使用するためのものですか?
ベストアンサー1
ES6モジュールのアップデート
内部ネイティブ ECMAScript モジュール(とimport
そしてexport
声明)およびES6 クラス厳密モードは常に有効になっており、無効にすることはできません。
元の回答
Javascript Strict Mode に関するこの記事は興味深いかもしれません:John Resig - ECMAScript 5 の Strict モード、JSON、その他
いくつか興味深い部分を引用します:
厳密モードは、プログラムまたは関数を「厳密な」動作コンテキストに配置できる ECMAScript 5 の新機能です。この厳密なコンテキストでは、特定のアクションが実行されないようにし、より多くの例外をスローします。
そして:
厳格モードはいくつかの点で役立ちます:
- よくあるコーディングの間違いをキャッチし、例外をスローします。
- 比較的「安全でない」アクション (グローバル オブジェクトへのアクセスなど) が実行されると、それを防ぐか、エラーをスローします。
- わかりにくい機能やよく考えられていない機能を無効にします。
また、ファイル全体に「厳密モード」を適用できることにも注意してください...または、特定の関数にのみ使用することもできます(引き続き John Resig の記事から引用) :
// Non-strict code...
(function(){
"use strict";
// Define your library strictly...
})();
// Non-strict code...
これは、古いコードと新しいコードを混在させる必要がある場合に役立つかもしれません ;-)
だから、それはちょっと"use strict"
Perl で使用できます(名前の由来は?) : 破損につながる可能性のあるものをより多く検出することで、エラーを減らすのに役立ちます。
厳密モードはすべての主要ブラウザでサポートされています。