JavaScript: modo estricto y funciones anónimas

Casi todos mis archivos JS están envueltos en funciones anónimas. Si incluyo "use strict"; fuera de la función anónima, ¿se sigue aplicando el modo estricto a la función anónima?

Por ejemplo, ¿se aplica el modo estricto al cuerpo interno de la función anónima en el siguiente script?

"use strict";

(function() {
    // Is this code running under strict mode?
})(); 

preguntado el 16 de mayo de 11 a las 17:05

1 Respuestas

Según El artículo de John Resig, si activa el modo estricto en la parte superior del archivo, se aplica a todo el archivo / script. Entonces sí, eso implica que se aplicaría dentro de la función anónima.

También puede agregarlo dentro de una función, en cuyo caso solo se aplica a esa función específica.

Editado para agregar: aquí está la especificación completa. Un párrafo relevante:

10.1.1 Código de modo estricto

Una unidad sintáctica del Programa ECMAScript puede procesarse utilizando sintaxis y semántica de modo estricto o sin restricciones. Cuando se procesa utilizando el modo estricto, los tres tipos de código ECMAScript se denominan código global estricto, código de evaluación estricto y código de función estricto. El código se interpreta como código de modo estricto en las siguientes situaciones:

  • El código global es un código global estricto si comienza con un Prólogo de directiva que contiene una Directiva de uso estricto (consulte 14.1).
  • El código de evaluación es un código de evaluación estricto si comienza con un prólogo de directiva que contiene una directiva de uso estricto o si la llamada a eval es una llamada directa (ver 15.1.2.1.1) a la función eval que está contenida en el código de modo estricto.
  • El código de función que forma parte de una FunctionDeclaration, FunctionExpression o un descriptor de acceso PropertyAssignment es un código de función estricto si su FunctionDeclaration, FunctionExpression o PropertyAssignment está contenido en un código de modo estricto o si el código de función comienza con un Prólogo de directiva que contiene una directiva de uso estricto.
  • El código de función que se proporciona como último argumento al constructor de función incorporado es un código de función estricto si el último argumento es una cadena que, cuando se procesa como un cuerpo de función, comienza con un prólogo de directiva que contiene una directiva de uso estricto.

Respondido el 17 de diciembre de 12 a las 20:12

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.