ウェブサイト検索

javascript - ES6で「use strict」を使うことは推奨されませんか?


私はまだECMAScript 6に詳しくありません。ES6をアプリケーションコードに使用しているReact Starter Kitのリポジトリをクローンしたばかりです。リンターがuse strictディレクティブの使用を禁止するように設定されているのを見て驚きました。これはES6以前のJavaScriptでは推奨されていたと思っていたからです。では、これは一体何のためなのでしょうか?

回答 #1

ES6モジュールは常に厳密モードです。仕様の関連部分を引用すると:

10.2.1 厳格モードのコード

ECMAScriptスクリプトの構文単位は、制限のないモードまたは厳格モードの構文と意味論のいずれかを使用して処理することができます。次の場合にはコードは厳格モードのコードとして解釈されます:

  • グローバルコードは、ディレクティブプロローグが Use Strict ディレクティブを含む場合には厳格モードコードとなる(14.1.1 を参照)。
  • モジュールのコードは常に厳格モードのコードです。
  • ClassDeclaration または ClassExpression のすべての部分は、strict mode コードです。
  • Evalコードは、Use Strict指令を含むディレクティブ序文で始まる場合、またはevalの呼び出しが厳格モードのコードに含まれる直接eval(12.3.4.1を参照)である場合、厳格モードコードとなります。
  • 関数コードは、関連する FunctionDeclaration、FunctionExpression、GeneratorDeclaration、GeneratorExpression、MethodDefinition、または ArrowFunction が厳格モードコードに含まれている場合、または関数の [[ECMAScriptCode]] 内部スロットの値を生成するコードが Use Strict 指令を含む Directive Prologue で始まる場合、厳格モードコードです。
  • 組み込みの Function および Generator コンストラクタに引数として渡される関数コードは、最後の引数が文字列であり、その文字列を処理した結果が、'use strict' 指令を含むディレクティブ・プロローグで始まる FunctionBody である場合、厳格モードのコードになります。

関連記事