有关javascript写不写分号的争论,正如C++中的大括号应该写到哪一行一样,纷纷纭纭,每个的支持者都能找到一大堆理由。
我是个C++出身的程序员,因此对于这个争论不感兴趣,分号那是写习惯了的,不写分号总觉得心里不踏实。以前一直写JSP+easyui,倒也没出什么问题。这几天看了一下Vue.js,觉得这个设计理念很好,数据绑定,想想powerbuilder、delphi和C#,开发效率那是杠杠的。照着例子写了点代码,于是有了这么一段:
data:function()
{
return
{
counter:0
};
}
我觉得没什么问题,但是运行就是报错,说没有返回一个对象。这个代码风格其实是我之前的风格,大括号到下一行,但是在js中是有问题的。一直觉得我是个每句代码都要加分号的人,不太可能出错,就没有认真去看ASI(自动分号插入)机制。实际上,这里的return后面会自动插入一个分号,将大括号提上去就好。
其实我觉得写js时,加不加分号倒不是最大的问题,问题是ASI机制搞清楚了没。但是代码以后可能会交给别人维护,不加分号的人看加分号的代码可能没什么问题,反过来可能会有点麻烦,特别是对一些平时用传统语言临时来维护一下前端的人。
对我而言,总结就是,大括号上移,继续在每个语句后面加上分号。