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