selmertsxの素振り日記

ひたすら日々の素振り内容を書き続けるだけの日記

ES6において strict modeになる条件

モチベーション

code reviewをして貰ったときに、「ES Modulesを使うと、暗黙的に 'use strict' 付きますよ」というコメントを頂いた。'use strict' になる条件を全然把握していないので、ちょっと資料を読んでみた。

読んだ資料

ECMAScript® 2015 Language Specification

http://www.ecma-international.org/ecma-262/6.0/#sec-strict-mode-code

分かったこと

  • Global codeが、Strict Directive ( 'use strict' のこと )を含むDirective Prologueで始まるなら、strict mode codeである。
  • Module codeはいつでも strict mode codeである。
  • ClassDeclaration、またはClassExpressionの全ての部分は、strict mode codeである。
  • strict directive を含む場合、evalの中身も strict modeになる。
  • 関連する FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, MethodDefinition, ArrowFunctionがstrict mode codeを含んでいるならば、functionのcodeも strict modeなcodeになる。
  • 引数にcode strictされているfunctionがある場合、それを受け取るfunctionもcode strictになる