严格模式

严格模式又叫use strict,开启分成两种 : 1. 全局开启 ; 2. 局部开启 。

  1. 严格模式的目的:
    (1)消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
    (2)消除代码运行的一些不安全之处,保证代码运行的安全;
    (3)提高编译器效率,增加运行速度;
    (4)为未来新版本的Javascript做好铺垫。

  2. 严格模式的变更
    (1) 开启严格模式
    想开启严格模式,直接在作用域开始的位置写上 字符串 use strict
    (2)严格模式的规则
    关键字:var 、 with 、this 、参数、八进制、arguments
    03.区别 :
    1. var 使用的区别 ; 消除了伪全局变量!;
    (function(){
    “use strict”;
    a = 10;
    })();
    (function(){
    a = 10;
    console.log(a);
    })();
    2. 对函数参数的要求更严格了;

    (function(){
        function foo(a,a,b){
            console.log(a,b);
         }
        foo(1,2,3)
    })();
    
    (function(){
        "use strict";
        function foo(a,a,b){
            console.log(a,b);
        }
        foo(1,2,3)
    })();
    
    3. 实参形参 和 arguments的分离;
    
    arguments 会受到 形参赋值的影响;
    (function(){
        function foo(a,b){
            a = 20;
            console.log(a,b);
            console.log(arguments[0],arguments[1]);
        }
        foo(1,2)
    })();
    
    (function(){
        "use strict";
        // 形参 和 arguments 之间的区别;
        // 形参是变量可以随意赋值;
        // arguments 就是对应实参的关键字获取所有的实参,进行使用,不会被改变;
        function foo(a,b){
            a = 20;
            console.log(a,b);
            console.log(arguments[0],arguments[1]);
        }
        foo(1,2)
    })();
    
    4. arguments 的严格使用; 部分功能禁用了;
    (function(){
        function foo(){
           // arguments.callee 指向了当前的函数;
           console.log(arguments.callee);
        }
        foo()
    })();
    
    (function(){
        "use strict";
        function foo(){
           // 禁用掉了大部分arguments的属性;
           console.log(arguments.callee)
        }
        foo()
    })();
    
  3. 严格模式之中对this的严格;
    在以后的编程之中,this最没有用的指向就是window;
    (function(){
    function foo(){
    this 指向window;
    console.log(this);
    }
    foo()
    })();
    (function(){
    “use strict”;
    function foo(){
    // 禁用指向了window的this,让this指向undefined
    console.log(this);
    }
    foo()
    })();
    6. with(){}
    使用with语句语法会混乱;
    使用with会很大程度上降低代码的性能;
    (function(){
    with(Math){
    // 可以省略对象前置;
    console.log(random());
    console.log(PI);
    }
    })();
    严格模式之下禁用with(){}
    (function(){
    “use strict”;
    with(Math){
    console.log(random());
    console.log(PI);
    }
    })();

     7. 在严格模式之中被禁用的进制,不允许使用八进制;
     (function(){
         // 0 开头就是八进制的标志;
         console.log(012);
     })();
    
     (function(){
         "use strict"
         console.log(012)
     })();
    

04.总结 :
1. var : 不允许声明伪全局变量;
2. 参数: 不允许重复的参数;
3. arguments 和参数的关系; 进行了分离;
arguments 禁用了 callee 属性;
4. this指向了window, 会让this的指向抛空;
5. 禁用了with语句;
6. 严格模式之中不允许使用八进制;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值