"use strict";
by horhey
JavaScript
"use strict";
var foo = "test";
function test(){}
// deleting variables or functions throw errors
delete foo;
delete test;
function test2(arg) {
// deleting arguments throw errors
delete arg;
}
// duplicate variables or keys throw errors
var bar = { foo: true, foo: false };
// attempts to assign a value to baz where baz hasn’t been defined will fail
baz = 0;
// virtually any attempt to use 'eval' throw errors
obj.eval = 0;
obj.foo = eval;
var eval = 0;
function eval(){}
function test(eval){}
//function(eval){}
new Function("eval");
// attempts to create a new var via eval are blocked
eval("var a = false;");
print( typeof a ); // undefined
// attempts to overwrite arguments throw errors
function() {
arguments = [0,1,2];
}
/*
Any attempts to write to a property whose writable attribute is set to false, delete a property whose configurable attribute is set to false, or add a property to an object whose extensible attribute is set to false will result in an error.
*/