2012-07-26 12 views
20

Con questa pagina:Possibile abilitare "strict mode"; in FireBug e nella console di Chrome?

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

console Firebug dà:

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

Ma allora questo è successo:

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

Anche se si commento fuori delete foo; in modo che lo script non si rompe , l'eliminazione di bar è ancora valida nonostante il fatto che "sia una proprietà di un oggetto Global poiché viene creata tramite la variabile de claration e così ha DontDelete attribute ":

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

è possibile abilitare "modalità strict"; in FireBug o nella console di Chrome?

+1

Mi domando se il codice della console viene convogliata attraverso 'eval()', nel qual caso attribuisce la DontDelete no essere impostato. – AJP

+0

... giusto, se avessi appena letto poi la prossima sezione: 'E questo è l'essenza del comportamento anormale di Firebug. Tutto il testo in console sembra essere analizzato ed eseguito come codice Eval, non come Global o Function. – AJP

+2

Ho seguito il primo suggerimento di @ zoranc solo per vedere la modalità rigorosa che funziona nella console di chrome. '(funzione f() { 'use strict'; console.log ('" questo "qui è:', questo, 'Modalità rigorosa è cool ...'); }());' ' (funzione f() { console.log (' "questo" qui è:', questo, '! Le variabili globali sono il male Così Crockford mi ha detto ...'); }()); ' – slacktracer

risposta

12

La console di Firebug funziona avvolgendo tutto il codice in una chiamata "eval", così la prima istruzione nello script non è più "use strict" è - quindi è disabilitato. Potresti provare a racchiudere il codice in una funzione per far rispettare "use strict" per quella particolare funzione, ma la soluzione migliore che conosco è saltare la console e testare direttamente nella pagina stessa.

2

Se sono solo testando una singola funzione nella console, si può anche solo mettere 'use strict' come la prima linea nella dichiarazione di funzione.

2

Utilizzare MAIUSC + INVIO per immettere 'use strict'

come questo enter image description here

+1

funziona. è sufficiente assicurarsi di aggiungere "use strict"; ad ogni interazione in F12 Chrome Console. –