标签:es5 mod 变量 tar conf func pack 语句 let
参考:http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html
"use strict" v = 1 // 报错,v未声明 for(i = 0;i<2;i++){ //报错,i未声明 }
因为with语句无法在编译时就确定,属性到底归属哪个对象。
"use strict"; var v = 1; with (o){ // 语法错误 v = 2; }
"use strict"; var x = 2; console.info(eval("var x = 5; x")); // 5 console.info(x); // 2
function f(){ return !this; } // 返回false,因为"this"指向全局对象,"!this"就是false function f(){ "use strict"; return !this; } // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
function f(){ "use strict"; this.a = 1; }; f();// 报错,this未定义
function f1(){ "use strict"; f1.caller; // 报错 f1.arguments; // 报错 } f1();
严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。
"use strict"; var x; delete x; // 语法错误 var o = Object.create(null, {‘x‘: { value: 1, configurable: true }}); delete o.x; // 删除成功
"use strict"; var o = { p: 1, p: 2 }; // 语法错误 function f(a, a, b) { // 语法错误 return ; }
"use strict"; var n = 0100; // 语法错误
function f(a){ "use strict" arguments++; // 语法错误 } function f(a) { a = 2; return [a, arguments[0]]; } f(1); // 正常模式为[2,2] function f(a) { "use strict"; a = 2; return [a, arguments[0]]; } f(1); // 严格模式为[2,1]
function package(protected) { // 语法错误 "use strict"; var implements; // 语法错误 }
标签:es5 mod 变量 tar conf func pack 语句 let
原文地址:http://www.cnblogs.com/zgx123/p/7465781.html