前言
在ES5推出了严格模式的说法,而我们许多项目之中也会默认为严格模式。在通常情况下,我们也不会因为严格模式而局限自己的代码编写,那么问题来了,严格模式究竟是什么意思呢?
严格模式
写法: 'use strict'
作用域:按照写入模式的作用域作用
this指向问题
- 严格模式下全局作用域中的函数中的
this
是undefined
;普通模式下的this
指向window
- 严格模式下构造函数需加
new
调用,this
指向创建的对象实例,否则会报错;普通模式下不会报错,且相对于调用全局作用域的函数,即this
指向window
- 定时器的
this
指向window - 事件、对象还是指向调用者
函数变化
- 不能有重名的参数,否则报错;普通模式下允许重名参数,但会覆盖
- 不允许在非函数的代码块内声明函数
//不可取
if(a===0){
function b(){}
}
//可取,合法的
function a(){
function b(){}
}