两分钟理解 JavaScript 严格模式,避开这些常见陷阱

开发
严格模式通过将一些普通JavaScript中的"静默错误"转变为抛出错误,来帮助我们编写更加健壮的代码,它还修复了一些阻碍JavaScript引擎优化的缺陷。

JavaScript的严格模式(Strict Mode)是ECMAScript 5引入的一项重要特性,旨在让代码运行更安全,同时避免一些常见的编程错误。通过简单地在脚本或函数的开头添加"use strict";声明,我们就可以启用这一模式。

为什么使用严格模式?

严格模式通过将一些普通JavaScript中的"静默错误"转变为抛出错误,来帮助我们编写更加健壮的代码。它还修复了一些阻碍JavaScript引擎优化的缺陷。

如何启用严格模式

// 全局启用
"use strict";

// 或在函数内部启用
function myFunction() {
  "use strict";
  // 函数代码
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

严格模式下的常见陷阱

1. 未声明变量

在非严格模式下,给未声明的变量赋值会自动创建一个全局变量。在严格模式下,这会抛出错误。

"use strict";
x = 10; // 错误:x未定义
  • 1.
  • 2.

正确做法:始终使用var、let或const声明变量。

2. 删除变量或函数

"use strict";
var x = 10;
delete x; // 错误:不能删除变量

function test() {}
delete test; // 错误:不能删除函数
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

3. 重复参数名

正确做法:确保函数参数名唯一。

4. 八进制语法

"use strict";
var num = 010; // 错误:八进制语法无效
  • 1.
  • 2.

正确做法:使用0o前缀表示八进制。

var num = 0o10; // 合法的八进制表示
  • 1.

5. with语句

正确做法:明确指定对象。

var x = Math.cos(Math.PI);
  • 1.

6. 赋值给只读属性

7. this的值

在严格模式下,函数内部的this不会默认指向全局对象。

"use strict";
function showThis() {
  console.log(this); // undefined,非严格模式下为全局对象
}
showThis();
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

避开这些陷阱,不仅能让我们的代码更加健壮,还能使我们养成更好的编程习惯。

责任编辑:赵宁宁 来源: JavaScript
相关推荐

2017-01-23 08:41:43

云计算

2017-07-05 16:38:46

企业云供应商超融合

2021-11-30 06:56:59

缓存穿透数据库

2021-08-17 14:38:22

微信内存功能

2015-04-17 09:32:27

链路负载深信服

2018-11-26 10:10:35

前端Vue.jsAngular

2022-04-08 15:32:19

代码抗疫程序

2022-11-16 12:08:16

2019-02-25 23:02:16

数据科学职业数据科学家

2014-02-14 10:46:16

2025-01-24 08:45:00

AI工具模型

2022-10-17 18:41:35

macOS滚动元素

2023-06-27 15:52:09

2024-03-27 12:46:53

AI训练

2023-03-12 21:28:36

AI工具

2018-03-01 18:45:15

区块链数据库生存游戏

2020-07-22 19:20:44

微信移动应用

2009-07-29 17:40:56

ibmdwAIX

2022-11-04 08:38:57

索引数据分库
点赞
收藏

51CTO技术栈公众号