今天查看某些jQuery插件的代码,发现开头加了";",运行不会出错,而且不像是作者手误。
像下面代码这样的,这是为什么呢?
;(function($) { ... }
今天查看某些jQuery插件的代码,发现开头加了";",运行不会出错,而且不像是作者手误。
像下面代码这样的,这是为什么呢?
;(function($) { ... }
这个是为了多个JS文件合并压缩的时候防止文件之间没有;分隔导致错误,如
a.js
var plugin1 = true
b.js
(function($){ //dosomething })();
如果使用合并压缩工具之后会变成
var plugin1 = true(function($){})();
这样是会报错的TypeError: true is not a function
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
没有仔细看过jquery的代码,不过这个很好理解:js代码结束的时候,最后一句是允许不加分号的(比如一个函数的最后一句)。如果某个js代码这么做了,那么把它跟另外一个js脚本拼在一起的时候,原来是“最后一句”的,变成了不是最后一句,于是就出现语法错误了。
另外,仅包含分号的语句,和C语言一样,表示一个空语句,完全是符合语法的,所以也不会有错。