美文网首页
ES5严格模式

ES5严格模式

作者: 成长储存罐 | 来源:发表于2019-08-26 15:16 被阅读0次

 严格模式的作用:

    1.消除了JS语法的一些不合理、不严谨之处,减少一些怪异行为;

    2.消除代码运行的一些不安全之处,保证代码运行的安全;

    3.提高编译器效率,增加运行速度;

    4.为未来新版本的JS做好铺垫

    严格模式体现了JS更合理,更安全,更严谨的发展方向,包括IE10在内的主流浏览器都已经支持它了

“严格模式”有两种调用方式,适用于不同的场合;

    针对整个脚本文件:将 "use strict" 放在脚本文件的第一行,则整个脚本文件都将以“严格模式”运行,

        如果这行语句不在第一行,则无效,整个脚本以“正常模式”运行。

        如果不同模式的代码文件合并成一个文件,这一点需要特别注意。

    针对单个函数:将 "use strict" 放在函数的第一行,则整个函数以“严格模式”运行。

       脚本文件的变通写法:因为第一种调用方式不利于文件合并,所以更好的做法是,借用第二种方法,将整个脚本文件放在一个立即执行的匿名函数中

进入严格模式之后,需要进行哪些行为变更:

    1.全局变量声明时,必须加关键字(var)

        正常模式:a = 10;    console.log(a)    //10

        严格模式:a = 10;    console.log(a)    //a is not defined

    2.this无法指向全局对象

        正常模式:function fn(){ console.log(this) }        //window

        严格模式:function fn(){ console.log(this) }        //undefined

    3.函数内不允许出现重名参数

        正常模式:function fn( a,b,b ){ console.log(a,b) }

                fn(1,2,3)        //1,3

        严格模式:function fn( a,b,b ){ }

         //报错:Duplicate parameter name not allowed in this context    在此上下文中不允许出现重复的参数名

    4.arguments对象

        4.1 arguments对象不允许被动态改变

            正常模式:function fn(a){

                        a=20;

                        console.log(a);                //20

                        console.log(arguments[0]);//20

                    }

                    fn(10);

            严格模式:function fn(a){

                        a=20;

                        console.log(a);                //20

                        console.log(arguments[0]);    //10

                    }

                    fn(10);

        4.2 arguments对象不允许被自调用(递归)

            正常模式:function fn(a){

                        if( a == 1 ){

                            return 1;

                        }

                        return arguments.callee(a-1) + a;

                    }

                    fn(3);            //6

            严格模式:function fn(a){

                        if( a == 1 ){

                            return 1;

                        }

                        return arguments.callee(a-1) + a;

                    }

                    //报错:'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

                    //报错:"caller","arguments","callee",不能在严格模式下使用

    5.新增的保留字:implements,interface,let,package,private,protected,public,static,yield

相关文章

  • ES5和ES6

    ES5 严格模式 1. 理解: 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(stric...

  • 2018-09-29

    ES5 严格模式 1. 理解: 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(stric...

  • ES5、ES6、ES7

    ES5 严格模式 1. 理解: * 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(str...

  • 4-1

    ES5 严格模式 1. 理解:* 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(stri...

  • ES5 ES6

    ES5 严格模式: "use strict"; 严格模式对正常的 JavaScript语义做了一些更改。严格模式通...

  • 2018-12-15

    ES5 严格模式: "use strict"; 严格模式对正常的 JavaScript语义做了一些更改。严格模式通...

  • ES5

    严格模式 理解: 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(strict mode)...

  • Es5

    严格模式 理解: 除了正常运行模式(混杂模式),ES5添加了第二种运行模式:"严格模式"(strict mode)...

  • ES5-6-7学习

    ES5中的特性 一、严格模式 'use strict' 1. 理解: 除了正常运行模式(混杂模式),ES5添加了第...

  • 严格模式的限制

    "use strict";ES6 的模块自动采用严格模式;严格模式是 ES5 引入的; 严格模式主要有以下限制。 ...

网友评论

      本文标题:ES5严格模式

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