ES2021 的 use strict 严格模式,默默做了什么?

什么是严格模式?

严格模式是 ECMAScript 5 引入的一种 JavaScript 严格运行模式。开启严格模式后,JavaScript 引擎会对代码执行进行更严格的解析和错误检查,确保代码更加规范严谨。

开启严格模式有两种方式:

  1. 在整个脚本文件中开启严格模式,可以在脚本文件顶部添加如下代码:
'use strict';
  1. 在函数内部开启严格模式,可以在函数体顶部添加如下代码:
function foo() {
  'use strict';
  // 函数体内部的代码会在严格模式下执行
}

ES2021 对严格模式的改进

在 ES2021 中,严格模式进行了一些改进,包括:

1. 更安全的 eval()

在严格模式下,能够访问的变量总是被限制在本地作用域内。在 ES2021 中,eval() 也被修改了,更加安全了。

在严格模式下,eval() 在创建一个新的词法作用域时会禁止作用域中的变量泄露到外部作用域。

'use strict';

const top = 1;
eval('const top = 2; console.log(top);'); // 2
console.log(top); // 1

2. 构造函数必须使用 new 关键字

在严格模式下,使用构造函数时必须使用 new 关键字。如果不使用 new,则会抛出一个错误。

'use strict';

function Person(name) {
  this.name = name;
}

new Person('Alice'); // 正常调用
Person('Alice'); // 抛出错误

3. 禁止删除变量

在严格模式下,删除变量会抛出一个错误。

'use strict';

let x = 1;
delete x; // 抛出错误

4. arguments 不能被修改

在严格模式下,arguments 对象不能被重新赋值。

'use strict';

function foo() {
  arguments = [1, 2, 3]; // 抛出错误
}

5. eval() 和 arguemnts 不能作为变量名

在严格模式下,eval() 和 arguments 不能作为变量名。

'use strict';

let eval = 1; // 抛出错误
let arguments = 2; // 抛出错误

严格模式的优点

使用严格模式可以让代码更加规范严谨,从而提高代码质量和可读性。严格模式还可以帮助发现一些常见的 JavaScript 代码漏洞和错误,从而提高代码的安全性。

总结

严格模式是 ECMAScript 5 引入的一种 JavaScript 严格运行模式,可以帮助提高 JavaScript 代码的质量和安全性。在 ES2021 中,严格模式进行了一些改进,包括更加安全的 eval()、构造函数必须使用 new 关键字等。在编写 JavaScript 代码时,尽可能使用严格模式来提高代码质量。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b0c8b4add4f0e0ffa21ce5