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


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

为什么使用严格模式?

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

如何启用严格模式

// 全局启用  
"use strict";  
  
// 或在函数内部启用  
function myFunction() {  
  "use strict";  
  // 函数代码  
}  

严格模式下的常见陷阱

1. 未声明变量

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

"use strict";  
x = 10; // 错误:x未定义  

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

2. 删除变量或函数

"use strict";  
var x = 10;  
delete x; // 错误:不能删除变量  
  
function test() {}  
delete test; // 错误:不能删除函数  

3. 重复参数名

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

4. 八进制语法

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

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

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

5. with语句

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

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

6. 赋值给只读属性

7. this的值

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

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

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