Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

闲扯空白与分号

  我不爱以空白字符来表意的语言,最典型的就是 Python。JavaScript 虽然大部分情况下都不以空白字符来表意,但它神奇的自动分号补全机制导致了在这方面依然无法做到完美。HTML 同样有空文本节点的问题。CSS 也许才感觉对空白没什么依赖。
  如果一种语言中的空白字符不影响语句的含义,那么只要把代码中连续的空白字符替换成一个即可实现最简单的压缩。其实早期的 JavaScript 压缩就是这么干的,后来雅虎的 YUI 团队推出了 AST 压缩后才结束了空白压缩时代。但是的空白压缩法存在很多问题,比如下面这个代码压缩前后的执行结果就是不同的: void function(){
  g()
  function g(){
    console.log(1)
  }
  return 
  function g(){
    console.log(2)
  }
}()
  JavaScript 的自动分号补全机制就是罪魁祸首。但这也确实已经属于历史遗留问题了,大家现在都想把它搞好,可改了这东西可能导致很多旧程序跑不动。其实如果把代码写成抽掉空白字符就死的形式(比如上面的代码),那只能说是代码写得太烂。要使代码总是不被坑,那就需要在适当的地方加分号。
  说到分号可能会引起哗然。我自己是个十足的分号党,为什么说「十足」呢?因为我自己的代码会在所有语句后面加分号,即使语句块后面确实是不需要分号的。当然,只给必要情况加分号的风格我也能接受,在一些开源项目中我可能就会使用这种风格。然后还有一种「尽可能不加分号」的风格,反正我是无法理解了。
  其实开发者自己纠结空白和分号这种事情真的很无聊,无论何种代码风格都可以通过工具来转换。我觉得对于空白和分号的问题,纠结点应该是自动分号补全机制的坑。
网名:
54.144.24.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^