JavaScript 的“严格模式”(strict mode)是 ECMAScript 5 中新增的一种代码执行模式。它可以让 JavaScript 引擎在执行脚本时更加严格地遵循规范,减少一些常见的错误,提高代码质量和性能。
使用方法
要使用“严格模式”,只需要在代码文件或函数体的顶部添加 "use strict";
即可。例如:
"use strict"; function myFunction() { // 函数体中的代码将按照严格模式执行 }
使用“严格模式”可以有助于增强代码的可维护性、可读性和安全性,并且可以消除某些不合理的语言特性。以下是一些关键的变化:
变量必须先声明
在“严格模式”下,必须先声明变量,才能使用它们。这意味着不能省略 var
、let
或 const
关键字,否则会抛出一个异常。例如:
"use strict"; myVar = "Hello World"; // 抛出异常,因为 myVar 没有先声明
禁止删除变量和函数
在“严格模式”下,无法删除函数或变量。如果尝试删除一个变量或函数,则会抛出一个异常。例如:
"use strict"; var myVar = 123; delete myVar; // 抛出异常,不能删除变量
禁止修改只读属性
在“严格模式”下,无法修改只读属性。如果尝试修改一个只读属性,则会抛出一个异常。例如:
"use strict"; var obj = {}; Object.defineProperty(obj, "myProp", { value: 123, writable: false }); obj.myProp = 456; // 抛出异常,无法修改只读属性
禁止使用未定义的变量
在“严格模式”下,无法使用未声明的变量。如果尝试使用一个未声明的变量,则会抛出一个异常。例如:
"use strict"; myVar = "Hello World"; // 抛出异常,因为 myVar 没有先声明
函数必须具有独立的作用域
在“严格模式”下,每个函数都必须具有独立的作用域。这意味着不能在函数内部访问外部函数的变量,除非将这些变量作为参数传递进来。例如:
-- -------------------- ---- ------- ---- -------- -------- ------- - --- - - --- -------- ------- - --- - - --- --------------- -- ---- - - -------- --------------- -- --------- - -
eval 和 with 关键字被禁止使用
在“严格模式”下,不能使用 eval
和 with
关键字。这是因为它们会导致一些安全和性能问题。例如:
"use strict"; eval("var x = 123;"); // 抛出异常,无法使用 eval with (Math) { console.log(sqrt(4)); // 抛出异常,无法使用 with }
指南
使用“严格模式”可以提高 JavaScript 代码的质量和性能,并减少一些常见的错误。以下是一些指导意义:
- 在新项目中建议启用“严格模式”;
- 在老项目中,慢慢引入“严格模式”,先解决一些低-hanging fruit 的问题;
- 不要省略
var
、let
或const
关键字; - 避免使用
eval
和with
关键
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/10149