"use strict"; (注:老版本浏览器会把它当作一行普通字符串加以忽略)
"use strict";var x = 1;console.info(eval("var x = 5; x")); // 5console.log(x); // 2 |
function f() { "use strict"; this.a = 1;}f(); // 报错,this未定义var f1 = new f();console.log(f1.a); |
function f() { "use strict"; f1.caller; // 报错 f1.arguments; // 报错} |
"use strict";var x;delete x; // 语法错误var o = Object.create(null, {‘x‘: { value: 1, configurable: true}});delete o.x; // 删除成功 |
(1)正常模式下,对一个对象的只读属性进行赋值,不会报错,只会默默地失败。严格模式下,将报错。
"use strict";var o = {};Object.defineProperty(o, "v", { value: 1, writable: false });o.v = 2; // 报错 |
(2)严格模式下,对一个使用getter方法读取的属性进行赋值,会报错。
"use strict";var o = { get v() { return 1; }};o.v = 2; // 报错 |
(3)严格模式下,对禁止扩展的对象添加新属性,会报错。
"use strict";var o = {};Object.preventExtensions(o);o.v = 1; // 报错 |
(4)严格模式下,删除一个不可删除的属性,会报错。
"use strict";delete Object.prototype; // 报错 |
"use strict";if (true) { function f() { } // 语法错误}for (var i = 0; i < 5; i++) { function f2() { } // 语法错误} |
原文:http://www.cnblogs.com/pao8041/p/5509664.html