zoukankan      html  css  js  c++  java
  • js严格模式

    本文章仅做学习之用,转载自阮一峰老师的个人博客。

    1.在脚本文件的开头插入'use strict';

    ex:

    <script type="text/javascript">
            'use strict';
            console.log('这是严格模式')
        </script>
        <script type="text/javascript">
            console.log('这是正常模式')
        </script>

    2.针对单个函数

     function strict(){
        "use strict";
        return "这是严格模式。";
      }
    
      function notStrict() {
        return "这是正常模式。";
      }

    3.严格模式的一些特点

      3.1.变量必须声明

    "use strict";
    
      v = 1; // 报错,v未声明
    
      for(i = 0; i < 2; i++) { // 报错,i未声明
      }

      3.2.静态绑定

      3.3.创建eval作用域

      3.4.禁止this对象指向全局对象

     function f(){
        return !this;
      }
      // 返回false,因为"this"指向全局对象,"!this"就是false
    
      function f(){
        "use strict";
        return !this;
      }
      // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。

      因此,使用构造函数时,如果忘了加new,this不再指向全局对象,而是报错。

    function f(){
    
        "use strict";
    
        this.a = 1;
    
      };
    
      f();// 报错,this未定义

      3.5.禁止删除变量

      严格模式下无法删除变量。只有configurable设置为true的对象属性,才能被删除。

    "use strict";
    
      var x;
    
      delete x; // 语法错误
    
      var o = Object.create(null, {'x': {
          value: 1,
          configurable: true
      }});
    
      delete o.x; // 删除成功

      3.6.对象不能有重名属性

    "use strict";
    
      var o = {
        p: 1,
        p: 2
      }; // 语法错误
  • 相关阅读:
    shentou mianshiti
    PHP
    XSS分类&危害&防御
    SQL注入原理&分类&危害&防御
    绕WAF&安全狗新姿势
    IO 模型
    SPC 判异
    [VBA]关于查找方法(Find方法)的应用(一)
    python学习第二十三天 并发编程(线程,进程,协程)
    excel 空单元格在图表中显示的方式 空 0 或者线
  • 原文地址:https://www.cnblogs.com/white55k/p/11983038.html
Copyright © 2011-2022 走看看