美文网首页
javascript严格模式下有哪些不同

javascript严格模式下有哪些不同

作者: Adambee08 | 来源:发表于2018-02-09 11:10 被阅读36次

    ECMAScript 5引入了严格模式(strict mode),严格模式即在严格的条件下进行,其中的一些不确定的行为得到处理。

    严格模式

    通过在脚本或函数的头部添加"use strict";表达式来声明。
    支持严格模式的浏览器有ie 10+,Firefox 4+,chrome 13+,safari 5.1+,opera 12+。

    使用严格模式的好处:

    • 消除语法的不合理,不严谨之处,保证代码的运行安全
    • 提高编译器效率,增加运行速度
    • 为未来新版本的js做铺垫

    严格模式的限制

    1. 不允许使用未声明的变量
      对象也是一个变量。
    "use strict"
    x = {s1:100, s2:99}; //Uncaught ReferenceError: x is not defined
    
    1. 不允许对变量或函数使用delete操作符
    "use strict"
    var x = 1;
    delete x; //Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
    
    1. 不允许变量重名
    "use strict"
    function fs(r1,r1) {
    } //Uncaught SyntaxError: Duplicate parameter name not allowed in this context
    
    1. 不允许使用八进制
    "use strict"
    var x = 012; //Uncaught SyntaxError: Octal literals are not allowed in strict mode.
    
    1. 抛弃with语句
    "use strict"
    var str = "hello";
    with(str) {
      console.log(toUpperCase());
    }
    //Uncaught SyntaxError: Strict mode code may not include a with statement
    
    1. 不可对只读对象赋值,不可对不可配置对象使用delete操作符
    "use strict"
    console.log(Object.prototype);
    delete Object.prototype; //Uncaught TypeError
    console.log(Object.prototype); 
    
    1. 禁止this关键字指向全局对象
    "use strict"
    function fs() {
      console.log(this);
    }
    fs();
    //undefined
    
    1. 不可在if内部声明函数
    "use strict"
    var a=0;
    if(a<=2) {
      function add() {
        a++;
        return a;
      }
    }
    add(); //Uncaught ReferenceError: add is not defined
    console.log(add()); //非严格模式下返回2
    

    相关文章

      网友评论

          本文标题:javascript严格模式下有哪些不同

          本文链接:https://www.haomeiwen.com/subject/nfjftftx.html