严格模式与非严格模式的区别
什么叫严格模式?
我们常规的js代码属于非严格模式,因为js是弱类型语言,存在许多类型错误,因此为了以后的js发展,添加了严格模式
严格模式如何实现?
- 整个js脚本实现严格模式,只需要在js最顶部加上 use strict 即可,函数中实现严格模式只需要在函数头部添加即可
<script>
'use strict'
</script>
<script>
(functione(){
'use strict'
})()
</script>
严格模式与非严格模式的主要区别
- 变量规范:非严格模式下,变量可以不进行声明,可直接赋值,严格模式中,变量必须声明才能赋值
- 函数this指向:非严格模式下,普通函数指向Window,严格模式下,this为undefined
- 构造函数调用:非严格模式下,构造函数可以直接调用,严格模式中不行
- 删除变量:非严格模式下,可以使用delete删除已经声明的变量,严格模式下回报错
- 在定时器函数中,this的指向都为window
- 函数中传递的形参不能重复