美文网首页
严格模式

严格模式

作者: Artifacts | 来源:发表于2019-10-11 23:38 被阅读0次

    参考详解JavaScript严格模式

    ECMAscript 5添加了“严格模式”。一旦使用严格模式,则不严谨的语法代码将不再被支持。

    <script>//1  
    //在js代码的顶部加上这么一句,声明严格模式的使用
    "use strict"; //注意:不能大写
    function testFun1 () {
     //此处也为严格模式
    }
    </script>
    
    <script> //2
    //此作用域由于没有声明“严格模式”,因此此作用域的代码按“非严格模式”编译
    str = "码农3号"; //不报错
    </script>
    
    <script> //3
    function testFun2 () {
    "use strict";    //只对该函数作用域内的代码有效
    }
    //此处依然为"非严格模式"
    </script>
    

    此处第一组script标签内的代码是使用了“严格模式”,而第二组script标签内的代码不是严格模式。因为每一组script标签就是一个作用域,而严格模式的声明只对所在的作用域生效。

    注意

    变量必须先声明,再使用

    functiontest(){
    "use strict";
    foo='bar';// Error
    }
    

    不能对变量执行delete操作

    var foo="test";
    functiontest(){}
    deletefoo;// Error
    deletetest;// Error
    functiontest2(arg){
    deletearg;// Error
    }
    

    对象的属性名不能重复

    {foo:true,foo:false}// Error
    

    禁用eval()
    函数的arguments参数

    setTimeout(functionlater(){// do stuff...setTimeout( later,1000);},1000);
    

    禁用with(){}
    不能修改arguments
    不能在函数内定义arguments变量
    不能使用arugment.caller和argument.callee。因此如果你要引用匿名函数,需要对匿名函数命名

    相关文章

      网友评论

          本文标题:严格模式

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