JavaScript 代码开头添加分号

幸福在前方 2019-11-18 345 阅读

很多朋友可能会注意到,在一些插件的代码起始位置有一个分号(;)。
从表面看,它真的是毫无用处,甚至有些奇怪,所以也有很多朋友会问这么做的原因是什么。

   [ jQuery ] 运行代码    下载代码

<script type>="text/javescript">
;function(global, factory){
factory(global);
}(typrof window !== "underfined" ? window : this, function(window, noGlobal){
var jQuery = function( selector,contexe ) {
return new jQuery.fn.init( selector, context);
};
jQuery.fn = jQuery.prototype ={};
//核心方法
//回调系统
//异步队列
//数据缓存
//队列操作
//选择操作
//节点遍历
//文档处理
//样式操作
//属性操作
//事件体系
//AJAX交互
//动画引擎
return jQuery;
}));

可以看到在JavaScript代码的起始位置有一个分号。
这样做是非常有必要的,可以防止一些意外发生,比如当与其他代码合并压缩的时候。
如果不在前面添加一个分号,那么这个小括号可能会和前面合并的代码产生一个语法关联。
看一段代码实例:

   [ jQuery ] 运行代码    下载代码

a = b
(function() {
// code
})()

上面代码的本意如下:
(1).变量b的值赋值给变量a。
(2).然后执行名函数。但是JavaScript解析器对上述代码的实际解读如下:

   [ jQuery ] 运行代码    下载代码

a = b(function() {
// code
})()

b变成了一个函数,参数是匿名函数,这完全背离了原来代码的初衷。
使用分号可以进行一个断句,完全避免了上述类似问题的出现。

最新游戏