2012-07-26 15 views
20

Con esta página:Posible habilitar el "modo estricto"; en FireBug y la consola de Chrome?

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
     "use strict"; 
     var foo = 2; 
     delete foo; 
    </script> 
    </head> 
    <body></body> 
</html> 

consola de Firebug da:

applying the 'delete' operator to an unqualified name is deprecated 
>>> foo 
ReferenceError: foo is not defined 
foo 

Pero entonces esto es un éxito:

>>> var bar = 2; 
undefined 
>>> delete bar; 
true 

Aunque en comentario delete foo; de manera que la secuencia de comandos no se rompe , eliminar bar sigue siendo exitoso a pesar de que "es una propiedad de un objeto global, ya que se crea a través de la variable de claration y también lo ha DontDelete attribute ":

>>> foo 
2 
>>> delete foo 
false 
>>> var bar = 2; 
undefined 
>>> delete bar 
true 

¿Es posible activar el "modo estricto"; en FireBug y/o la consola de Chrome?

+1

Me pregunto si el código de la consola está siendo canalizado a través 'eval()', en cuyo caso los atributos de DontDelete no lo hará ser establecido. – AJP

+0

... bien, si acabara de leer la siguiente sección: 'Y esta es la esencia del comportamiento anormal de Firebug. Todo el texto en la consola parece ser analizado y ejecutado como código Eval, no como Global o Function. – AJP

+2

Seguí la primera sugerencia de @ zoranc solo para poder ver el modo estricto trabajando en la consola de Chrome. '(función f() { 'use strict'; console.log ('' this '' aquí es: ', esto,' Modo estricto es genial ... '); }());' ' (función f() { console.log ('' this '' aquí es: ', esto,' ¡Las variables globales son malas! Así que Crockford me dijo ... '); }()); ' – slacktracer

Respuesta

12

La consola Firebug funciona envolviendo todo el código en una llamada "eval" para que la primera instrucción en su script ya no sea "use strict" - por lo tanto, está deshabilitada. Podría tratar de incluir su código en una función para aplicar "use strict" para esa función en particular, pero la mejor solución que conozco es omitir la consola y probarla directamente en la página.

2

Si solo está probando una función en la consola, también puede poner 'use strict' como la primera línea en la declaración de la función.

2

uso Shift + Enter para introducir 'use strict'

como esto enter image description here

+1

Funciona. solo necesita asegurarse de agregar 'use strict'; en cada interacción en la Consola Chrome F12. –

Cuestiones relacionadas