JS的严格模式采用具有限制性javascript变体的一种方式,即在严格的条件下运行js代码。 严格模式对正常模式做了如下更改
- 消除了js语法的不合理、不严谨之处、减少了一些怪异行为。 如正常模式变量不声明可以直接赋值
- 消除代码运行的一些不安全之处,保证代码运行安全。
- 提高编译器效率,增加运行速度
- 禁用了未来版本的一些语法如class、export、extends、import不能作为变量名
开启严格模式 严格模式可在整个脚本,或者某个函数开启 脚本严格模式 代码最前面
"use strict"
//或者
(function(){
"use strict"
})
函数严格模式
function test(){
"use strict"
}
主要变化
- 变量必须声明在赋值
- 严禁删除已经声明的变量 如
delete 变量 - 严格模式下全局作用域中的函数中的this是undefined
- new实例化的构造函数指向创建对象的实例
- 定时器this还是指向window
- 函数里面的参数不允许重名
- 函数必须在顶层声明