How to use 'strict' mode in Chrome 'JavaScript Console' [duplicate]
I am practicing JavaScript on Chrome's 'JavaScript Console' ( version: 35.0) and I am unable to use the 'use strict' clause as expected.
For the following code snippet :
var obj={x:1,y:2}
//Define new property with 'writable' flag as false.
Object.defineProperty(obj, "z", {value:3, writable:false, enumerable:false, configurable:false})
// Try to change the property 'z',
"use strict"; obj["z"]=4
Output: 4
As per my understanding, changing value of a 'non-writable' property will silently fail in non-strict mode and throw 'TypeError' in strict mode, But I don't see the exception.
console.log(obj)
Object {x: 1, y: 2, z: 3}
Even though the property value is not changed but I am expecting a exception. Please correct if I am doing something wrong ?
Solution 1:
The easiest way to use strict mode is to use an IIFE (immediately Invoked Function Expression) like so:
(function()
{
'use strict';
var foo = 123;//works fine
bar = 345;//ReferenceError: bar is not defined
}());
To create a new-line in the console, use shift + enter, or write your code in a separate editor first, then copy-paste it to the console. Setting up a fiddle is all fine and dandy, but just test your code with the markup it was written for (ie: just clear the browser cache and test).
However, I'd urge you to install node.js, still. It's a lot easier to test your code, or validate it (both syntactically and coding-style wise) using JSHint. There are also a lot of ways to examine and your code that run out of node.js, so it's a really good development tool to have