严格模式("use strict"指令)
“use strict” 是 JavaScript 1.8.5 中的新指令(ECMAScript version 5), 它不算一条语句,而是一段文字表达式,更早版本的 JavaScript 会忽略它, “use strict”; 的作用是指示 JavaScript 代码应该以“严格模式”执行。
严格模式的使用
在脚本或函数的开头添加 “use strict”; 来声明严格模式,在脚本的开头添加严格模式有全局作用域,在函数里会有函数作用域
严格模式中不允许的事项
不声明变量(对象)的情况下使用变量
"use strict";
x = 3.14; // 这将引发错误
//---------------------------------
"use strict";
x = {p1:10, p2:20}; // 这将引发错误
删除变量(或对象),删除函数是不允许的
"use strict";
var x = 3.14;
delete x; // 这将引发错误
//---------------------------------
"use strict";
function x(p1, p2) {};
delete x; // 这将引发错误
八进制数值文本是不允许的,转义字符是不允许的
"use strict";
var x = 010; // 这将引发错误
//---------------------------------
"use strict";
var x = \010; // 这将引发错误
重复参数名是不允许的
"use strict";
function x(p1, p1) {}; // 这将引发错误
写入只读属性、写入只能获取的属性、删除不可删除的属性,是不允许的
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // 写入只读属性,会引发错误
//---------------------------------------
"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14; // 写入只能获取的属性,会引发错误
//---------------------------------------
"use strict";
delete Object.prototype; // 删除不可删除的属性,引发错误
with 语句是不允许的
"use strict";
with (Math){x = cos(2)}; // with 语句会引发错误
this关键字没作用 在严格模式下this关键字是undefined
支持严格模式的浏览器
版本 10 以后的 IE版本 4 以后的 Firefox版本 13 以后的 Chrome版本 5.1 以后的 Safari版本 12 以后的 Opera