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代码写分号添了一个理由。
相关文章
【视频教程】技术栈大升级:Vue3 到 Nuxt3(4)深入理解 SSR 和 `useAsyncData`
2023 年,我个人最大的变化,是从 Vue3 SPA 应用向 Nuxt3 SSR 应用过渡,在预期可能存在 […]
2024-06-102 分钟
在 Code.fun 做 Code Review(四)
时光如梭,一晃 2022 年已经过去 2/3,我们一起迎来 9 月。秋风送爽,丹桂漂亮,下面,我们一起回顾 8 […]
2022-09-036 分钟
在 Code.fun 做 Code Review(三):聊聊 Promise 的错误处理、如何真正学到技术
嗯,不知不知觉这个系列写到第三篇,这一篇会改变一下写法,从一次 Code Review 出发,讲解几个技术点, […]
2022-08-2110 分钟


