浏览器现在是基于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 拒绝重复属性和参数
    但是系统不会报错