JS加分号的理由

JavaScript界关于是否应该加分号的争论由来已久。在我看来,这就跟《格利佛游记》中“大头党”、“小头党”一样,纯粹蛋疼,一群衣食无忧的达人,领着一群不明所以的小白战来战去。

吐槽时间结束。我本来对于分号不是很在意,一般每行都加,函数和条件后面不加。后来学会了“模块化”的写法——即每个逻辑用一个立即执行函数——(function () { // 逻辑主体 })()包裹,就开始混用。一直没遇到什么问题,直到今天是 Ant + Closure Compiler 编译部署肉大师,莫名其妙的挂掉了。排查半天发现是分号的问题。

原来的代码可能是这个样子:

// 模块1
// 前面有若干代码
var Manager = {
  prop: '',
  method: function () {

  }
}

// 模块2,开头是个立即执行函数
(function () {
  // 代码
})()<

经过压缩后变成这个样子:

// }}(function 那里,会被当成一个函数来执行,于是整体的解析就会出错了
var Manager = {prop: '',method: function () { // code }}(function () {// 代码})()

这时只要给每个文件的末尾加上分号,就解决了。还有种做法,就是在开头加上分号,很多开源代码也是这样做的:

;(function () {
  // code
})()

如此,便给JavaScript代码写分号添了一个理由。


Posted

in

by

Comments

《“JS加分号的理由”》 有 2 条评论

  1. 夜阑 的头像

    学到鸟~~以为加不加都一样呢,看来还是有很大区别的啊,受教了

  2. caixw 的头像

    从C++遗留下的习惯,该加的都加上了。不过还真没在开头加分号的习惯,看来以后要注意了。

欢迎吐槽,共同进步

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: