2015-03-26 14 views
18

In ECMAScript 5 (aka JavaScript,) posso innescare modalità rigorosa aggiungendo "use strict" in cima alla mia funzione (o un file, ma questo è scoraggiato.)Quali funzionalità di ECMAScript 6 implicano una modalità rigorosa?

Capisco che in ECMAScript 6, alcune funzioni di sintassi gireranno in modalità rigorosa, in particolare class e moduli (tuttavia, fai clic)

Nel mondo ECMAScript 6, qual è l'elenco completo dei modi per attivare la modalità rigorosa?

+0

Suppongo che es6 sia in modalità rigorosa. –

+0

Questo era il piano originale, ma i problemi di compatibilità con le versioni precedenti indicano che la specifica contiene ancora molto supporto per la "modalità lax". –

+5

[Questa è la sezione pertinente della bozza delle specifiche.] (Http://people.mozilla.org/~jorendorff/es6-draft.html#sec-strict-mode-code) – Pointy

risposta

21

The spec dice:

  • codice del modulo è sempre rigido codice modalità.
  • Tutte le parti di una ClassDeclaration o ClassExpression sono rigorose.
  • ...

Il resto sono solo le cose conosciute da ES5, praticamente ogni codice/eval/funzione globale che inizia con il "use strict"; directive. Funziona anche all'interno dei nuovi tipi di funzione ES6 (freccia, generatore, sintassi del metodo).

+3

Sono un po 'sorpreso nel vedere che i generatori non sono implicitamente rigidi. –

+0

La risposta e le specifiche (collegate da qualcuno sopra) mancano di un'informazione cruciale: cosa succede se uso ES 2015 ma non i moduli ES 2015? Perché sto usando io.js e il nuovo sistema di moduli non può ancora essere usato (a meno che non usi Babel), quindi userò le funzionalità di ES 2015 ma aspetterò fino a che * in realtà * non usi la sintassi del nuovo modulo. La modalità rigorosa è implicita in questo scenario oppure no? Altrimenti dovrebbero dire "moduli ES 2015". È rilevante solo per node.js/io.js poiché nei browser è chiaro, ma node.js ha già dei moduli .... –

+0

@ MörreNoseshine: Come dice la risposta, le regole per la modalità strict nei non-moduli sono solo le come in ES5. Gli script di nodo ("modulo") devono ancora iniziare esplicitamente con '" use strict "' per fare in modo che lo scope del modulo IEFE usi la modalità strict. – Bergi

Problemi correlati