正确使用“use strict”

前言

看一些开源项目的时候,觉得别人的代码确实写得好,一些细节都做得很到位。这里介绍一下如何合理使用“use strict”,自己写一些js类库的时候,不放严格要就自己。从多角度考虑,避免细节出错。

正确使用“use strict”

转载请注明出处:http://www.haomou.net/2014/09/19/2014_js2/

严格模式概念

如果给JavaScript代码标志为“严格模式”,则其中运行的所有代码都必然是严格模式下的。

其一:如果在语法检测时发现语法问题,则整个代码块失效,并导致一个语法异常。
其二:如果在运行期出现了违反严格模式的代码,则抛出执行异常。

注:经过测试IE6,7,8,9均不支持严格模式。
JavaScript代码“严格模式”使用方法:
严格模式需要使用字符串序列:
“use strict”

在如下位置加入可以开启相应代码块中的严格模式:
1.必须在全局代码的开始处加入。
2.在eval代码开始处加入。
3.在函数声明代码开始处加入。
4.在new Function()所传入的body参数块开始加入。

例1:

1
2
var num =012;
alert(num);

在非严格模式下,可以使用0(零)开头前缀声明8进制。显示10。
但是在严格模式下,会产生错误。

1
2
3
4
5
“use strict”;
var num =012;
alert(num);
测试结果:
IE6,7,8,9均显示10。

FF报错:octal literals and octal escape sequences are deprecated
Chrome报错:Uncaught SyntaxError: Octal literals are not allowed in strict mode.
Opera报错:Syntax error at line 3 while loading: Invalid character var num = 012;

如果使用严格模式,除了0(零)开头前缀8进制以外还有:
1.在代码中不能使用一些扩展的保留字:
implements,interface,let,package,private,public,static,yield
2.with语句也不能使用。
3.不能声明或重写eval和arguments两个标识符。
4.不能用delete 删除显式声明的标识符,名称或具名函数。

使用注意

“use strict”; 被放在一个 JavaScript 文件或函数的起始位置时 (script 标签中,必须出现在其他非指令序言指令的语句前面),才可以开启严格模式。

通常实践推荐在所有的函数 (或者所有最外层函数) 的开始处加入 “use strict”; 指令启动严格模式,而绝不推荐在文件的开头处写全局 “use strict” – 相反,这时一些 ES 校验器会给出警告。

全局 “use strict” 为什么不好? 一个重要的原因就是文件合并时,一些文件用了严格模式,而另一些没有。这时这些本来是严格模式的文件,被 merge 后,这个串就到了文件的中间,不仅没有指示严格模式,反而在压缩后浪费了字节。

ECMA262 Edition5. 严格模式(Strict Mode) 参考:http://www.cnblogs.com/_franky/archive/2012/01/05/2184461.html

谢谢!

欢迎关注皓眸学问公众号(扫描左侧二维码),每天好文、新技术!任何学习疑问或者工作问题都可以给我留言、互动。T_T 皓眸大前端开发学习 T_T

未经允许不得转载:皓眸大前端 » 正确使用“use strict”

赞 (0)
分享到:更多 ()

评论 0