这个问题我们得从两个方面看,我们先从语义上看,如果不加分号的话,代码可读性会有一的定差。在压缩JavaScript的时时候。所有的代码会压缩为一两行,有些时候会出bug。
很多人喜欢这样写代码: ;function($,undefined)
;(function($){$.extend($.fn... 现般在一些 JQuery 函数前面有分号 ,在前面加分号可以有多种用途:
1、防止多文件集成成一个文件后,高压缩出现语法错误。
2、这是一个匿名函数,一般js库都采用这种自执行的匿名函数来保护内部变量 (function(){})()
3、因为undefined是window的属性,声明为局部变量之后,在函数中如果再有变量与undefined作比较的话,程序就可以不用搜索undefined到window,可以提高程序性能
4、有一种东西叫脚本压缩,前端页面要减少脚本数量和脚本大小,所以要把一类的脚本压缩在一起,为了避免压缩时前一个脚本没有写最后一个分号而导致压缩后脚本不能使用,所以要在开始加一个分号。
上面这种错误的出现就是因为怕别人写的js代码没有加分号,如果掌握了技巧,其实在必须的时候加分号就可以,其他地方加不加分号影响不大。另一方面按照js的parse规则来看,分号是没有影响的,后者说影响很小,小到可以忽略不计。代码先要被parse成AST,AST是抽象语法树,AST中没有分号这个东西,单说执行本身,是不可能因为有无分号而造成性能差异的。所以唯一会有差异的是在parsing代码的阶段。而parsing本身是一次性的,因此通常不可能是性能问题的重点,何况ASI(自动分号插入)只是整个parsing的很小一点。
最后总结一下,不写分号,会影响性能,但是可以忽略不计,但是有些时候会导致代码报错。
来源:千锋HTML5