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

    标志
    
    "use strict";
    //老版本浏览器会自动忽略
    调用
    
    //整个文件调用    
    (function(){
        "use strict";
    })();
    //单个函数调用
    function(){
        "use strict";
    
    }
    语法 行为
    
    严格模式下 ,不声明的变量赋值的话,会报错误
    
    禁止使用with
    
    eval作用域只在内部,不再能够生成全局变量了
    
    this关键字不再指向全局
    
    构造函数如果忘记new this也不会指向全局 ,抛出错误
    
    禁止内部遍历调用栈
    
    function f1(){
    
      "use strict";
    
      f1.caller;    // 报错
      f1.arguments; // 报错
    
    }
    
    f1();
    无法删除变量 只有configurable:true时才可以
    
    "use strict";
    
    var x;
    
    delete x; // 语法错误
    
    var o = Object.create(null, {
                x: {
                    value: 1,
                    configurable: true
                }
    });
    
    delete o.x; // 删除成功 
    正常模式下,对一个对象的只读属性进行赋值,不会报错,只会默默地失败。严格模式下,将报错。
    
    "use strict";
    
    var o = {};
    
    Object.defineProperty(o, "v", { value: 1, writable: false });
    
    o.v = 2; // 报错
    严格模式下,对禁止扩展的对象添加新属性,会报错。
    
    严格模式下,删除一个不可删除的属性,会报错。
    
    严格模式下,对一个使用getter方法读取的属性进行赋值,会报错。
    
    对象不能有重名的属性
    
    "use strict";
    
    var o = {
        p: 1,
        p: 2
    }; // 语法错误
    多个重名参数报错
    
    "use strict";
    
    function f(a, a, b) { // 语法错误  
    
        return ; 
    
    }
    禁止八进制表示法
    
    不允许对arguments赋值
    
    arguments不再追踪参数的变化
    
    禁止使用arguments.callee
    
    不允许在非函数的代码块内声明函数
    
        "use strict";
    
        if (true) {
    
          function f() { } // 语法错误
    
        }
    
        for (var i = 0; i < 5; i++) {
    
          function f2() { } // 语法错误
    
        }
    

      

    Now or nerver .
  • 相关阅读:
    IE8下,时间函数问题
    sublime有时候用快捷键时出现的是css的快捷键
    热词高亮并去重
    关于百分比的margin
    手机端后退功能
    CSS3小水滴代码
    关于Gmapping的学习2
    关于概率运动模型
    A*算法的学习
    经典ICP算法
  • 原文地址:https://www.cnblogs.com/iyueyao/p/3434493.html
Copyright © 2011-2022 走看看