una - validacion de formularios con javascript ejemplos
¿Hay alguna manera de verificar si se aplica el modo estricto? (6)
¿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 funciones como isStrictMode();//boolean
El hecho de que this
dentro de una función llamada en el contexto global no apunte al objeto global puede usarse para detectar el modo estricto:
var isStrict = (function() { return !this; })();
Manifestació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
Manera más elegante: si "esto" es un objeto, conviértalo en verdadero
"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 )
}
Otra solución puede aprovechar el hecho de que en modo estricto, las variables declaradas en eval
no están expuestas en el ámbito externo
function isStrict() {
var x=true;
eval("var x=false");
return x;
}
Prefiero algo que no usa excepciones y funciona en cualquier contexto, no solo global:
var mode = (eval("var __temp = null"), (typeof __temp === "undefined")) ?
"strict":
"non-strict";
Utiliza el hecho de que en modo estricto eval
no introduce una nueva variable en el contexto externo.
Sí, this
es ''undefined''
dentro de un método global cuando estás 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 tienes una respuesta. Pero ya escribí un código. Entonces aquí