ES5 的 严格模式

除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。

<script>

        "use strict"

        console.log("已经进入严格模式");

</script>

  

很多人并不在意严格模式的使用

但其实经常使用严格模式会让你的代码更加规范

就算不适用严格模式也要避免这些问题

1.全局变量声明时 必须加var
  //伪全局变量不允许被使用
  
<script>
 
  "use strict"
 
  a = 10;//报错 因为 a没有被var 声明
 
  //Uncaught ReferenceError: v is not defined; 引用错误: v 没有被声明
 

</script>
  2.this 无法指向全局对象;
 
  <script>
 
      "use strict"
 
      // console.log("已经进入严格模式");
     
      function a(){
 
      this.b = 10; //报错 , 因为this指向了window对象;
      //Uncaught TypeError: Cannot set property 'b' of undefined; 类型错误 : 不能给undefined设置属性b;
  }
 
      a();
 
  </script>
 
3.函数内重名属性;
 
 
 <script>
 
      "use strict";
 
      function a(b,b,c){ //报错;
 
          // Uncaught SyntaxError: Duplicate parameter name not allowed in this context ;语法错误:在此上下文中不允许重复的参数名称
 
      }
  </script>
 
  4.arguments对象;
 
  4.1arguments对象不允许被动态改变;
 
  
<script>
 
      function fn1(a) {
      a = 2;
      return [a, arguments[0]];
    }
    console.log(fn1(1)); // 正常模式为[2,2]
 
    function fn2(a) {
      "use strict";
      a = 2;
      return [a, arguments[0]];
    }
    console.log(fn2(1)); // 正常模式为[2,2]
 
  </script>
 
  4.2arguments对象不允许被自调用;
 
 
 <script>
      "use strict";
    var f = function() { return arguments.callee; };
    f(); // 报错
      //Uncaught TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
      //类型错误:“caller ”,“arguments ”,“callee ”,不能在严格模式中使用;
  </script>
 
  5.新增保留字; implements, interface, let, package, private, protected, public, static, yield。
 
  
<script>
   "use strict";
   function package(protected) { // 语法错误
 
      var implements; // 语法错误
   }
  package();
  </script>

严格模式的存在必定是有他存在的意义

  -消除Javascript语法的一些不合理、不严谨之处,减少一些怪异行为;
 
  - 消除代码运行的一些不安全之处,保证代码运行的安全;
 
  - 提高编译器效率,增加运行速度;
 
  - 为未来新版本的Javascript做好铺垫。
 
"严格模式"体现了Javascript更合理、更安全、更严谨的发展方向,包括IE 10在内的主流浏览器,都已经支持它。
 
同样的代码,在"严格模式"中,可能会有不一样的运行结果;一些在"正常模式"下可以运行的语句,在"严格模式"下将不能运行。掌握这些内容,有助于更细致深入地理解Javascript,让你变成一个更好的程序员。
 
 
对于程序来说:执行效率高,运行速度快
对于写代码的人来说:代码书写规范,避免异常错误
 
 
 
所以使用严格模式还是很必要的 
当严格成为一种习惯
原文地址:https://www.cnblogs.com/vicky77/p/7382086.html