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?
Mi domando se il codice della console viene convogliata attraverso 'eval()', nel qual caso attribuisce la DontDelete no essere impostato. – AJP
... 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
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