javascript - figcaption - html tags
¿Es seguro el uso estricto de los sitios en vivo? (2)
Es lo último. Mientras se está en strict mode
, un intérprete de Javascript puede lanzar mensajes de error en tiempo de ejecución, que no se lanzan en modo no estricto.
Por otro lado, la mayoría de estos errores son "buenos errores", lo que significa que realmente ayudarán a no romper tu código.
Por ejemplo
function foo() {
"use strict";
bar = true;
}
foo();
Esto lanzará
"ReferenceError: assignment to undeclared variable bar"
En modo estricto, que es una buena cosa. En un modo no estricto, simplemente habríamos creado una variable global llamada bar
, que probablemente no sea lo que queríamos. Hay muchas otras situaciones en strict mode
impide que el programador haga algo estúpido / malo / no deseado y lanza mensajes de error. Pero una vez más, desea tener esos errores en lugar de algunos errores extraños.
Tener una lectura adicional en MDN
"uso estricto"; Parece increíble, y realmente nos gustaría usarlo en nuestra tienda. Sin embargo, solo lo queremos para que nosotros (los desarrolladores) podamos encontrar problemas de rigor; No queremos que nuestro sitio se rompa para nuestros clientes reales cuando antes funcionaba bien.
Ahora, solo podríamos usar alguna lógica del lado del servidor para lograr esto:
{% if debug %}<script>"use strict";</script>{% endif %}
... excepto que el "uso estricto" funciona archivo por archivo, por lo que no funcionará (bueno, a menos que iniciemos el procesamiento del lado del servidor de todos nuestros archivos JS).
Entonces, mi pregunta es: ¿todas las cosas de "uso estricto" se comprueban cuando se carga la página, o es posible que "uso estricto" encuentre errores después de que la página se haya cargado? Si es lo primero, podemos usar "uso estricto" y dejar de preocuparnos, porque cargaremos nuestro sitio en desarrollo antes de cargarlo en vivo. Sin embargo, si es lo último, parece que estamos fuera de suerte, ya que no podemos probar todas las condiciones posibles de tiempo de ejecución (y, nuevamente, no queremos cometer errores para nuestros usuarios cuando no hubo errores antes).
Si te entiendo correctamente, sí, es definitivamente posible que el modo estricto detecte errores después de que la página se haya cargado. Por ejemplo:
''use strict'';
setTimeout(function() {
undefined = 42; // Causes a TypeError
}, 1000);
// Click here for a demo.
Lo que puedes hacer es bastante simple: deberías estar minimizando tu JavaScript cuando pases a la producción de todos modos. Solo asegúrese de que el ''use strict''
se elimine durante ese proceso de minificación.
Si esto falla, solo trata de asegurarte de que tu código esté libre de errores. El modo estricto usualmente entra en juego con respecto a la semántica, no por algo extraño en la entrada del usuario o incluso por la sintaxis. No debería ser demasiado difícil atrapar todos los casos. (Pero minimizar y eliminar el ''use strict''
es una solución mucho mejor).