what the statement script que node missing es6 enable javascript strict

javascript - the - use strict que es



¿Pueden los comentarios llegar antes de ''uso estricto''? (4)

He visto algunos lugares en Internet que dicen ''use strict;'' debe aparecer en la primera línea del ámbito funcional para el que desea que se aplique la directiva de comportamiento.

Sin embargo, en mi experiencia, no importa si hay comentarios antes.

/* some comment */ ''use strict'';

¿Existe una deficiencia funcional al tener comentarios antes de la directiva, o es simplemente una cuestión de estilo? ¿Está esto definido en alguna parte en la especificación ECMAScript?

Solicito no solo los entornos V8 (node.js), sino también los navegadores.


De acuerdo con el estándar ECMAScript 262 5ª edición, sección 14.1 :

. . . las producciones iniciales de SourceElement de un Programa o FunctionBody y donde cada Expresión de Expresión en la secuencia consiste completamente en un token StringLiteral seguido de un punto y coma

Énfasis mio

y el ECMAScript 262 6th edition standard section 14.1.1 :

Un Prólogo Directivo es. . . las producciones iniciales StatementListItem o ModuleItem de FunctionBody, ScriptBody o ModuleBody.

Énfasis mio

Tal vez más simplemente, la sección 7.4 de ECMAScript 5th ed. Norma (sección 11.4 de la norma ECMAScript 6ta ed.) establece:

Los comentarios se comportan como espacios en blanco y se descartan.

Dado que los comentarios no son declaraciones y finalmente se descartan, use strict; Puede venir después de ellos, ya que es la primera declaración efectiva en el cuerpo.

Una actualización años más tarde, más o menos, más contexto.

La mayoría de los analizadores tienen un paso de lexing y un paso de análisis. El primero, lexing, divide el código fuente textual en tokens más palpables (como el left angle bracket , identifier , comma , string literal , etc.) y el paso de análisis realmente hace algo con ellos, en muchos casos (y ciertamente en el caso). de Javascript), convirtiéndolo en lo que se llama un árbol de sintaxis abstracta (o AST para abreviar).

Dos cosas hacen que esto sea "permitido", especialmente según este comentario : uno es el hecho de que los comentarios se deben descartar, lo que generalmente ocurre durante la lectura , y el ''use strict''; Tiene que ser la primera declaración, que generalmente se verifica durante el análisis .

Dado que el lexing viene antes del análisis, por lo tanto, la verificación de ''use strict''; En realidad, nunca se verán los comentarios para tener la posibilidad de tener un problema con ellos.


Sí, puedes agregar comentarios antes de "use strict"; --solo debe aparecer antes de cualquier declaración .

Vea este ejemplo de MDN

// Whole-script strict mode syntax "use strict"; var v = "Hi! I''m a strict mode script!";


Sí. Los comentarios pueden ser colocados antes de la declaración de "uso estricto". Los motores de JavaScript simplemente omiten los comentarios, por lo que para todos los efectos, la declaración de "uso estricto" se encuentra en la parte superior del ámbito funcional.


Según MDN , use strict; Debe ser la primera declaración en un script o función. Los comentarios no son declaraciones.