JavaScript 严格模式

除了正常运行模式以外,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命令声明,而后再使用。
相关文章
相关标签/搜索