语法
在文件开头添加
'use strict'
作用
消除代码中不合理、不安全的地方,推动开发者编写更规范、更健壮的代码
- 消除静默错误
- 未声明变量:直接赋值未声明的变量会抛出 ReferenceError。
x = 10 - 重复声明变量或参数:对象属性或函数参数重复定义会报错。
function (a, a) {}
let obj = {a: 1, a: 2} - 限制 eval 的副作用:eval 内部声明的变量不会泄漏到外部作用域。
"use strict";
eval("var x = 5;"); // 不影响外部作用域
console.log(x); // ReferenceError: x is not defined
- 禁止删除变量/函数:尝试删除不可配置的属性或变量会报错。
"use strict";
var x = 10;
delete x; // SyntaxError: Delete of an unqualified identifier in strict mode
- this 不再默认指向全局对象:在普通函数中,this 的值为 undefined(非全局对象 window)。