JavaScript で「use strict」は何をしますか? また、その理由は何ですか? 質問する

JavaScript で「use strict」は何をしますか? また、その理由は何ですか? 質問する

最近、私は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 で使用できます(名前の由来は?) : 破損につながる可能性のあるものをより多く検出することで、エラーを減らすのに役立ちます。

厳密モードはすべての主要ブラウザでサポートされています

おすすめ記事