【翻译】Javascript中多个var语句并不是多余的

       不知道从什么时候开始,程序员会尽可能选择使用单个var语句来申明和赋值多个变量,并用逗号隔开。从某种程度上来说,javascript的特性决定了使用多个var语句是不必要的。

       为了说明白我的意思,举例如下:

       

       我问了一些资深的javascript程序员,为何偏好于用这种使用单个var语句的方式,而唯一能得到的就只有主观方面的解释:

  1. 使用多个var语句显得累赘。
  2. 使用多个var语句显得笨拙。
  3. 用单个var语句使代码看起来格式清晰。

 

       然而我并不同意这种观点。在javascript里面,多个var语句申明并非不必要,这样做也并不笨拙。它们减少了代码维护的成本。

 

  • 维护

       试想下这种情形:我们有一些代码需要修改,需将foo的值改为bar-1而不是写死为1,则我们需要将foo定义在bar后面,如下图所示:

       

       上面的代码看起来似乎并没多大影响,但是在编辑器里,你需要将上述“之前”的代码改为“之后”的版本。看看有多少地方涉及到这个问题需要修改。

       现在看看下面的版本,再找找相应要修改的地方,少了吧。

       

 

  • 缩进:多行表达式

       在一个var语句里声明里多个多行文本对象/数组或函数表达式该如何缩进?看起来如何?

       

       PS:那些说用单个var语句申明多个变量看起来格式清晰的程序员,我想肯定是用4个空格键进行缩进的,并且没有注释。这样的代码看起来很糟,并不能提供任何帮助。

 

  • 压缩

       一个好的压缩器,如UglifyJS,会知道如何将多个连续的var语句压缩为一个单一的、用逗号分隔变量的var语句。这样你就不需要进行“过早地优化”了。

       如果你用的压缩器不能做到这些,去找个好点的。

       

       不管怎样,我建议你也考虑一下,总结下哪种方式比较符合你的要求。然后按照自己的方式写就行。

       附言:Rick Waldron告诉我他最近一直在使用类似的风格。虽然他在一个执行环境中也是只使用一个var语句,但是仅仅是用来声明变量,而赋值是在函数体里面完成的。正如javascript本身所做的那样。

 


原文链接:https://benalman.com/news/2012/05/multiple-var-statements-javascript/

来自:未命名

May
28
2012
评论
热度(5)
© pm163 | Powered by LOFTER