JavaScript 严格模式(Strict Mode)是一种 ECMAScript 5 引入的执行模式,它提供了一种更加严格的语法和错误处理机制,以帮助开发者编写更健壮的代码。启用严格模式的方式是在脚本或函数的开头添加如下语句:
"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