With this page:
<!DOCTYPE html> <html> <head> <script> "use strict"; var foo = 2; delete foo; </script> </head> <body></body> </html>
Firebug console gives:
applying the 'delete' operator to an unqualified name is deprecated >>> foo ReferenceError: foo is not defined foo
But then this is successful:
>>> var bar = 2; undefined >>> delete bar; true
Even if you comment out delete foo;
so that the script does not break, deleting bar
is still successful despite the fact it "is a property of a Global object as it is created via variable declaration and so has DontDelete attribute":
>>> foo 2 >>> delete foo false >>> var bar = 2; undefined >>> delete bar true
Is it possible to enable "strict mode" in FireBug and or Chrome's console?
Actually you can just write 'use strict' before your code without the need to wrap it within an IIFE. @Shayan Honestly I am not sure whether this example in particular should return undefined . Try this 'use strict'; (function() { console. log(this)} )() .
The "use strict" Directive It is not a statement, but a literal expression, ignored by earlier versions of JavaScript. The purpose of "use strict" is to indicate that the code should be executed in "strict mode". With strict mode, you can not, for example, use undeclared variables.
The firebug console works by wrapping all the code in an "eval" call so the first statement in your script is no longer "use strict" - hence it is disabled. You could try wrapping your code in a function to enforce "use strict" for that particular function but the best solution I know of is to skip the console and test straight in the page itself.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With