除了正常运行模式以外,ECMAScript5还引入了第二种运行模式:严格模式(strict mode)模式。严格模式是为了JavaScript定义了一种不一样的解析与执行模型。在严格模式下,ECMASript3中的一些不肯定的行为将获得处理,并且对某些不安全的操做也会抛出错误。java
引入严格模式的目的:浏览器
1.消除JavaScript语法的一些不合理,不规范,不严谨之处,减小一些怪异行为; 2.消除一些不肯定的行为,保证代码运行的安全; 3.提升编译器效率,增长运行速度; 4.为将来新版本的Javascript作好铺垫。
在严格模式下,JavaScript的执行执行结果会有很大的不一样,支持严格模式的浏览器包括:安全
IE10+,Firefox4+,Safari5.1+,Opera12+和Chrome。
若是想要在整个脚本启用严格模式,能够在顶部添加以下代码:函数
“use strict” 这行代码看起来更新是字符串,并且也没有赋值给任何变量,但其实它是一个编译指示(pragma),用于告诉支持的JavaScript引擎切换到严格模式,这是为了避免破坏ECMASript3语法而特地选定的语法。 须要注意的一点是将“use strict“脚本文件必需要放在第一行,则整个脚本文件都以”use strict“严格模式运行,假如”use strict“不在第一行,则不在运行严格模式,在这样的状况下,整个脚本都以”正常模式运行“。若是你没有控制页面中全部脚本的权力,建议只在须要测试的特定函数中开启严格模式。
如何调用javaScript严格模式测试
"严格模式"有两种调用方法,使用于不一样的场合code
1.针对整个脚本文件 <script> "use strict" console.log("这是严格模式") </script> <script> console.log("这是正常模式") </script> 2.针对单个函数 将"use strict"放在函数体的第一行,则整个函数以"严格模式"运行。 function strict(){ "use strict"; return "这是严格模式。"; } function notStrict() { return "这是正常模式。"; } 3.脚本文件的变通写法 由于第一种调用方法不利于文件合并,因此更好的作法是,借用第二种方法,将整个脚本文件放在一个当即执行的匿名函数之中。 (function (){ "use strict"; // some code here })();
全局变量显式声明ip
在正常模式中,若是一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。 "use strict"; v = 1; // 报错,v未声明 for(i = 0; i < 2; i++) { // 报错,i未声明 } 所以,严格模式下,变量都必须先用var命令声明,而后再使用。