浏览器现在是基于es3.0的方法与es5.0的新增方法来使用的
es3.0与es5.0因为版本的不同可能会冲突 那么浏览器会按照es3.0来解决
es5.0严格模式
es3.0和es5.0产生冲突的部分就使用es5.0 否则会使用es3.0
启用es5.0严格模式
“use strict”
不再兼容es3的一些不规则语法 使用全新的es5规范
为什么这样写
因为这就是一行字符串 不会对不兼容严格模式的浏览器产生影响
因为一些老的浏览器可能没有更新到es5.0版本 那么如果是通过方法之类的来启用严格模式 那么就会报错
但是写成字符串起码浏览器不报错
两种用法
全局严格模式
这条语句要放在代码的最顶端 它前面不可以有其他代码 可以有空格回车
局部函数内严格模式(推荐)
如
function test(){
“use strict”;
console.log(arguments.callee);
}
严格模式规则
1 不支持 with , arguments.callee , func.caller
2 变量赋值前必须声明
如 b = 123; 系统报错
3 局部this必须被赋值 赋值什么就是什么
es3.0时预编译this会指向window 但是es5.0不会 会返回undefined
如
function test(){
console.log(this);
}
test();
//this为undefined
4 拒绝重复属性和参数
但是系统不会报错