JS 严格模式作用是啥?【热度: 530】

JavaScript的严格模式("use strict")是一种限制JavaScript语法的方式,目的是为了捕捉一些常见的编码错误,同时阻止或者抛出错误对于一些保险不良行为的使用。它通过在脚本或函数的顶部添加一个特殊的声明来启用,声明如下:

"use strict";

以下是严格模式的一些主要作用:

  1. 消除JavaScript语法的一些静默错误
    在非严格模式下,这些错误不会抛出异常,可能导致开发者难以发现。启用严格模式后,这些错误会被抛出。

  2. 修复可能使JavaScript引擎难以优化代码的一些错误
    有些代码模式可能是引擎优化的障碍。严格模式下这些模式会被禁止,有时候能提升代码的性能。

  3. 禁止使用某些语法
    这些语法在未来的ECMAScript版本中可能会有其他的用途。比如,未来的ECMAScript版本可能会使用implements, interface, let, package, private, protected, public, static, 和 yield 作为关键词。

  4. 为未来新版JS做准备
    有些旧语法或行为在严格模式下已被废弃,确保代码兼容未来语言的演变。

以下是“严格模式”相比于“非严格模式”的一些具体区别:

  • 在严格模式下,试图给未声明的变量赋值会抛出错误。
  • 删除不可删除的属性会抛错(如 delete Object.prototype;)。
  • 要求函数的参数名唯一。
  • 禁用with语句。
  • eval在严格模式下有自己的作用域,且不会引入新的变量。
  • 禁止this关键字指向全局对象。
  • 不能使用八进制语法(例如,042这样的八进制数字会抛错)。
  • 不能给不可写属性赋值,也不能给只读属性赋值(getter-only)。
  • 禁止在非构造函数中使用delete删除变量(否则会被忽略而不是抛错)。

总的来说,严格模式使得JavaScript语言有了更严谨的错误检查体系,促使开发者编写出更安全、更有利于维护和运行效率的代码。