2015-03-26 1 views
18

В ECMAScript 5 (он же JavaScript), я могу вызвать строгий режим, добавляя "use strict" в верхней части моей функции (или файла, но это не рекомендуется.)Какие особенности ECMAScript 6 подразумевают строгий режим?

Я понимаю, что в ECMAScript 6, некоторые особенности синтаксиса повернет в строгом режиме, особенно class, и модули (однако вы делаете это.)

В мире ECMAScript 6, каков полный список способов запуска строгой моды?

+0

Я предполагаю, что es6 - это строгий режим. –

+0

Это был первоначальный план, но обратная совместимость означает, что спецификация по-прежнему содержит большую поддержку «слабого режима». –

+5

[Вот соответствующий раздел проекта спецификации.] (Http://people.mozilla.org/~jorendorff/es6-draft.html#sec-strict-mode-code) – Pointy

ответ

21

The spec говорит:

  • код модуля всегда строгий код режима.
  • Все части a ClassDeclaration или ClassExpression - это строгий код режима.
  • ...

Остальные просто известные вещи из ES5, в основном каждый глобальный/Eval/код функции, которая начинается с "use strict"; directive. Он также работает в новых классах ES6 (стрелка, генератор, синтаксис метода).

+3

Я несколько удивлен, увидев, что генераторы не являются неявно строгими. –

+0

Ответ и спецификация (связанная кем-то выше) пропускают одну важную информацию: что, если я использую ES 2015, но не модули ES 2015? Потому что я использую io.js, и новая система модулей еще не может быть использована (если я не использую Babel), поэтому я _do_ использую функции ES 2015, но жду, пока я действительно не смогу использовать новый синтаксис модуля. В этом сценарии подразумевается строгий режим или нет? Если нет, они должны действительно сказать «Модули ES 2015». Это актуально только для node.js/io.js, поскольку в браузерах это ясно, но у node.js уже есть модули .... –

+0

@ MörreNoseshine: Как говорится в ответе, правила для строгого режима в немодулях - это просто как в ES5. Сценарии узла («модуль») по-прежнему должны явно начинаться с '' use strict '', чтобы сделать область IDEE в режиме строгого режима. – Bergi