¿Hay alguna manera de comprobar si se aplica el modo estricto 'use strict', y queremos ejecutar código diferente para el modo estricto y otro código para el modo no estricto. Buscando función como isStrictMode();//boolean
¿Hay alguna manera de verificar si se aplica el modo estricto?
Respuesta
El hecho de que this
dentro de una función llamada en el contexto global no hará referencia al objeto global se puede utilizar para detectar el modo estricto:
var isStrict = (function() { return !this; })();
Demostración:
> echo '"use strict"; var isStrict = (function() { return !this; })(); console.log(isStrict);' | node
true
> echo 'var isStrict = (function() { return !this; })(); console.log(isStrict);' | node
false
Sí, es this
'undefined'
dentro de un método global cuando se está en modo estricto.
function isStrictMode() {
return (typeof this == 'undefined');
}
function isStrictMode() {
try{var o={p:1,p:2};}catch(E){return true;}
return false;
}
Parece que ya obtuvo una respuesta. Pero ya escribí un código. Así que aquí
Esto es mejor que la respuesta de Mehdi ya que funcionará en todas partes, no solo en un ámbito global. Upped :) – mgol
Esto produce un error de sintaxis, que ocurre antes de que se ejecute el código, por lo que no se puede capturar ... – skerit
Esto no funcionará en ES6 ya que la verificación se elimina para permitir los nombres de las propiedades calculadas. –
prefiero algo que no utiliza excepciones y trabaja en cualquier contexto, no sólo uno mundial:
var mode = (eval("var __temp = null"), (typeof __temp === "undefined")) ?
"strict":
"non-strict";
Se utiliza el hecho de la eval
en modo estricto no introduce una nueva variable en el contexto externo.
Solo por curiosidad, ¿qué tan a prueba de balas es esto en 2015, ahora que ES6 está aquí? –
Verifico que funciona en ES6 en los últimos chrome y nodejs. –
Elegante y funcional, ¡gracias! – rudyryk
forma más elegante: si "esto" es objeto, convertirlo en cierto
"use strict"
var strict = (function() { return !!!this })()
if (strict) {
console.log ("strict mode enabled, strict is " + strict)
} else {
console.log ("strict mode not defined, strict is " + strict)
}
- 1. ¿Hay alguna manera de verificar si se abrió una istream en modo binario?
- 2. ¿Hay alguna manera de forzar el modo estricto en el nodo?
- 3. ¿Hay alguna manera de verificar si el puntero está colgando?
- 4. ¿Hay alguna manera de verificar si el anclaje está activo?
- 5. JS ¿Hay alguna manera de verificar si existe un evento?
- 6. ¿Hay alguna manera de cambiar el modo predeterminado de vim?
- 7. ¿Hay alguna manera de verificar si la firma de una aplicación se depura o publica?
- 8. ¿Hay alguna manera de verificar si se define una función de VBScript?
- 9. Replicar arguments.callee en el modo estricto
- 10. Modo estricto en PHP?
- 11. ¿Hay algún tipo de "modo de rendimiento estricto" para MySQL?
- 12. ¿Hay alguna manera de verificar si la burbuja activó el clic?
- 13. JavaScript: modo estricto y funciones anónimas
- 14. ¿Hay alguna manera de verificar si hay enlaces simbólicos apuntando a un directorio?
- 15. Deshabilitar el modo estricto de MySQL
- 16. ¿Alguna manera de verificar si una XmlSchemaParticle es una EmptyParticle?
- 17. ¿Hay alguna manera de verificar si un proceso de impresión fue exitoso?
- 18. En .NET MVC, ¿hay alguna manera fácil de verificar si estoy en la página de inicio?
- 19. ¿Hay alguna manera de saber si se muestra el teclado virtual?
- 20. ¿Hay alguna manera de verificar document.ready() si jQuery no está disponible?
- 21. ¿Mejor manera de verificar si hay elementos en la lista?
- 22. ¿Hay alguna manera de verificar si existe un directorio en los archivos de configuración de Apache?
- 23. ¿Hay alguna manera de verificar si dos colecciones contienen los mismos elementos, independientemente de la orden?
- 24. ¿Hay alguna forma de determinar si el código GWT se está ejecutando en modo de desarrollo?
- 25. Compruebe si se aplica la misma política de origen
- 26. ¿Qué es el "modo estricto" y cómo se usa?
- 27. ¿Hay alguna manera de verificar si un usuario realmente calificó su aplicación?
- 28. ¿Hay alguna manera de verificar si una construcción está en Adhoc, lanzamiento, distribución mediante programación?
- 29. ¿Hay alguna manera de verificar si dos objetos tienen alias en Java?
- 30. ¿Hay alguna manera de verificar si una variable es una fecha en JavaScript?
Grande. Esto es elegante y funciona en todas partes. –
Para aclaración, la declaración de devolución es equivalente a 'return this === undefined', no lo está comparando con el objeto global, solo está comprobando si' this' existe. – aljgom