严格模式(strict mode)IE10版本以上支持
严格模式的作用
- 消除了JavaScript语法一些不合理、不严谨的部分;
- 消除代码一些不安全指出,保证代码运行的安全;
- 提高编译器效率,增加运行速度;
- 禁用了ECMAScript的某些,如class、enum、export、import、super等不可作为变量名
开启方法在脚本开始前,在所有语句前放一句**“use strict”;**
默认规定
- 严格模式下的变量,必须使用var声明,且不能删除声明好的变量
- this指向问题
- 普通模式下,全局作用域下的变量都指向window
- 严格模式下,this大都指向undefined
- 普通模式下,构造函数不用new,可以当普通函数使用时,this指向window
- 严格模式下,构造函数当普通函数使用时,this指向undefined;当new实例化,this指向实例对象
- 定时器的this指向,严格模式下还是指向window
- 对象、事件还是指向调用者
- 函数变化
- 不允许使用重名参数
- 不允许在非函数区域写函数,如在if…else…或for(){…}中,但是在function中可以写function