"use strict";
在全局范围下使用该语句将整个脚本启用严格模式,而在函数内部使用将只启用该函数内的严格模式。
严格模式的特点包括:
1. 变量必须先声明后使用:
在严格模式下,使用未声明的变量会抛出错误。
"use strict";
x = 10; // 抛出 ReferenceError: x is not defined
2. 禁止删除变量:
在严格模式下,使用 delete 删除变量、函数、函数参数会导致错误。
"use strict";
var x = 10;
delete x; // 抛出 TypeError: Cannot delete property 'x' of #<Object>
3. 禁止使用重复的参数名:
在严格模式下,函数参数不能有重复的名称。
"use strict";
function foo(a, a) {} // 抛出 SyntaxError: Duplicate parameter name not allowed in this context
4. 禁止使用 with 语句:
在严格模式下,使用 with 语句会导致错误。
"use strict";
with (obj) {} // 抛出 SyntaxError: Strict mode code may not include a with statement
5. 禁止在非函数代码块内声明函数:
在严格模式下,不允许在非函数的代码块内声明函数。
"use strict";
if (true) {
function foo() {} // 抛出 SyntaxError: In strict mode code, functions can only be declared at top level or inside a block.
}
6. this 的值为 undefined:
在严格模式下,全局作用域中调用函数时,函数内的 this 的值为 undefined,而不是默认的全局对象(通常是 window)。
"use strict";
function test() {
console.log(this); // 输出 undefined
}
test();
7. 禁止八进制表示法:
在严格模式下,八进制字面量的前缀 0 将不再被解释为八进制。
"use strict";
var num = 010; // 抛出 SyntaxError: Octal literals are not allowed in strict mode.
启用严格模式有助于减少错误,并使开发者更容易发现潜在问题。它通常被推荐在新项目中启用,以确保更加健壮和一致的代码。
转载请注明出处:http://www.pingtaimeng.com/article/detail/12799/JavaScript