1.严格模式
1.消除了JS语法的一些不合理、不严谨之处、减少了怪异行为
2.消除了代码运行的一些不安全之处,保证代码运行的安全
3.提高编译器效率,增加运行速度
4.禁用了未来版本的一些语法
2.开启严格模式
严格模式可以应用到整个脚本(script)或个别函数中
1.为脚本开启严格模式
-- 有的是严格模式,有的脚本不是,不利于合并,所以将整个脚本文件放到一个立即执行的匿名函数中,
这样独立创建一个作用域而不影响其他。
(function(){
"use strict"
....
})()
或者
<script>"use strict"</script> 当前脚本开启严格模式
2.为函数开启严格模式
-- 要给某个函数开启严格模式,需要把“use strict”声明放在函数体所有语句之前。
function fn(){
"use strict"
return 123
} 当前fn开启了严格模式
3.严格模式中的变化
1.变量必须先声明再使用
2.不能随意删除已经声明好的变量
4.严格模式下this指向问题
1.以前在全局作用域中的 this 指向 window 对象
2.严格模式下全局作用域中函数的 this 是 undefined
3.以前构造函数不加 new 也可以调用,当普通函数,this指向全局对象
4.严格模式下,如果构造函数不加 new 调用,this 会报错。
5.new 实例化的构造函数指向创建对象实例。
6.定时器 this 指向 window
7.事件、对象还是指向调用者
5.函数变化
1.函数不能有重名的参数
2.函数声明不能在非函数的代码块内,如:不能在if,for...中声明。