咏怀诗
学习+实践+记录=成长
posts - 11,comments - 3,trackbacks - 0

除了正常运行模式之外,ECMAScript5还引入了第二种运行模式:严格模式(strict mode)模式。严格模式是为了JavaScript定义了一种不同的解析与执行模型。在严格模式下,ECMASript3中的一些不确定的行为将得到处理,而且对某些不安全的操作也会抛出错误。

引入严格模式的目的:

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严格模式

"严格模式"有两种调用方法,使用于不同的场合

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
})();

全局变量显式声明

在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。严格模式禁止这种用法,全局变量必须显式声明。

"use strict";
 v = 1; // 报错,v未声明
for(i = 0; i < 2; i++) { 
    // 报错,i未声明
}

因此,严格模式下,变量都必须先用var命令声明,然后再使用。
posted on 2016-06-23 15:49 咏怀诗 阅读(...) 评论(...) 编辑 收藏