• JavaScript-严格模式


    一、严格模式和普通模式的不同?

      1、严格 ==》 变量必须通过var进行声明

      2、严格 ==》with被禁用

      3、严格 ==》eval作用域,eval()内的变量外面是读取不到的。

      4、严格 ==》禁止this关键字指向全局变量

      5、严格 ==》禁止函数内部遍历调用栈

      6、严格 ==》argunments对象的限制:argunments是函数的参数对象,严格模式做了修改:

        不允许对argunments赋值

        argunments不再追踪参数的变动

        禁止使用argunments,无法在匿名函数内部调用自身

          例子:var fn=function(num){

               num+=100;

               alert(num);

               alert(argunments[0]);

              }

              fn(100);

          结果:普通:200 200   严格:200 100

      7、严格 ==》禁止删除变量

      8、严格 ==》对禁止

    5、严格 ==》

    5、严格 ==》

    5、严格 ==》

    二、

      with 语句用于设置代码在特定对象中的作用域。(在低版本的浏览器中,会有内存泄露的情况,尽量不要使用)

    三、严格模式

    <script>
      "use strict"

    <、script>

      ****with

    <script>

      var obj={};

      var a=2;

      var b=3;

      with(obj){

        alert(a+b);  

      } 

    </script>  

      结果是:5

    如果是在严格模式下,就会报错,因为,严格模式下,with是不被承认的

    <script>

      "use strict"          //严格模式

      var obj={};

      var a=2;

      var b=3;

      with(obj){

        alert(a+b);  

      } 

    </script>

      结果是:报错

      ****this

      严格模式下,构造函数是会报错的,原因在于this

      //"use strict"

      var Cat=function(name)
      {
        this.name=name;
        this.say=function()
        {
          alert(this.name);
        }
      }
      Cat("猫咪");
      window.say();
      console.log(window);

      

      ****eval作用域

      "use strict"
      //严格模式下,会报错,因为eval()内的变量是读取不到的,只能在eval()内读取
      eval("var s=200;alert(s);");
      alert(s);
      //普通模式下,会报错,因为eval()内的变量,函数外面是不能使用的
      /* var abc=function()
      {
        eval('var s=200;');
      }
      abc();
      alert(s);
      */

  • 相关阅读:
    HDU 5714
    C++ 中的名称冲突之 "y1"
    FFT 模板
    Modular Query
    找礼物(find)(模拟)
    水流(water)(BFS)(DFS)
    单词接龙(dragon)(BFS)
    细菌(disease) (位运算)(状态压缩)
    Diamond Collector (动态规划)
    超级素数(sprime) (BFS)
  • 原文地址:https://www.cnblogs.com/xiaoyangtian/p/7967848.html
Copyright © 2020-2023  润新知