JavaScript严格模式的限制

JavaScript严格模式的限制
    严格模式的限制
 
    不允许使用未声明的变量:
 
"use strict";
 
function x(p1, p1) {};   // 报错
 
    对象也是一个变量。
 
"use strict";
 
var x = 010;             // 报错
 
    不允许删除变量或对象。
 
"use strict";
 
var x = 3.14;
 
delete x;                // 报错
 
    不允许删除函数。
 
"use strict";
 
function x(p1, p2) {}; 
 
delete x;                // 报错 
 
    不允许变量重名:
 
"use strict";
 
function x(p1, p1) {};   // 报错
 
    不允许使用八进制:
 
"use strict";
 
var x = 010;             // 报错
 
    不允许使用转义字符:
 
"use strict";
 
var x = \010;            // 报错
 
    不允许对只读属性赋值:
 
"use strict";
 
var obj = {};
 
Object.defineProperty(obj, "x", {value:0, writable:false});
 
obj.x = 3.14;            // 报错
 
    不允许对一个使用getter方法读取的属性进行赋值
 
"use strict";
 
var obj = {get x() {return 0} };
 
obj.x = 3.14;            // 报错
 
    不允许删除一个不允许删除的属性:
 
"use strict";
 
delete Object.prototype; // 报错
 
    变量名不能使用"eval"字符串:
 
"use strict";
 
var eval = 3.14;         // 报错
 
    变量名不能使用"arguments"字符串:
 
"use strict";
 
var arguments = 3.14;    // 报错
 
    不允许使用以下这种语句:
 
"use strict";
 
with (Math){x = cos(2)}; // 报错
 
    由于一些安全原因,在作用域eval()创建的变量不能被调用:
 
"use strict";
 
eval ("var x = 2");
 
alert (x);               // 报错

推荐阅读