javascript - 为什么JavaScript需要以 “;”开头?

最近,我注意到在注释部分之后,Web上的许多JavaScript文件都以;开头。

例如,this jQuery plugin's代码以:

/**
 * jQuery.ScrollTo
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 9/11/2008                                      
 .... skipping several lines for brevity...
 *
 * @desc Scroll on both axes, to different values
 * @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
 */
;(function( $ ){

为什么文件需要以 ;开头?我也在服务器端JavaScript文件中看到了这一约定。

这样做的优点和缺点是什么?

最佳答案

我要说的是,由于脚本通常是串联在一起的,因此必须最小化/压缩/发送在一起,所以最后一个家伙可能会遇到以下情况:

return {
   'var':'value'
}

在最后一个脚本的末尾,结尾没有 ;。如果您的开头有一个 ;,则很安全,例如:
return {
   'var':'value'
}
;(function( $ ){ //Safe (still, screw you, last guy!)
return {
   'var':'value'
}
(function( $ ){ //Oh crap, closure open, kaboom!
return {
   'var':'value'
};
;(function( $ ){ //Extra ;, still safe, no harm