JavaScript代码约定 - 变量声明

时间:2012-03-17 01:03:21

标签: javascript variables syntax coding-style

在JavaScript中声明变量的不易出错的方法是什么?

var a;
var b;
var c;

var a,
    b,
    c;

jQuery和Dojo使用第二种方法,并且就代码易读性而言,这是我最喜欢的,问题是我发现它更难调试。

示例1:

var a,
    b,
    c; // oops.. semicolon instead of comma
    d,
    e;

示例2:

在项目中搜索某个变量时,var在声明变量时更加突出。

编辑:原始示例错误,我在复制和粘贴时犯了一个错误。代码已经更新,对不方便感到抱歉。

5 个答案:

答案 0 :(得分:5)

由于您提到的原因,多个变量声明(而不是组合)不易出错。但是,合并声明还有其他一些优点:

  • JSLint和可能的其他短信会抱怨每个范围有多个var个关键字。
  • 由于显而易见的原因,单个var关键字比许多关键字缩小得更好。
  • 组合声明会强制您在一个地方声明变量,可能接近它们所在函数的开头,这被认为是一种好习惯。

另一方面,正如您所提到的,可以使用组合变量声明进行错误,并且可以在差异中表示它们。

只要你在整个项目中保持一致的变量声明风格,你选择的风格就不重要了。

答案 1 :(得分:2)

我更喜欢您使用一个var关键字的第二种方法。最近我更进一步,在每个变量上实例化类型,以帮助我防止意外类型重铸。一个例子是:

var a = 0,
    b = 0,
    c = {},
    d = [],
    f = "";

如果我此时有值,我在这里提供一个实际值。如果不是,我提供以下虚拟值:

    数字类型
  • 0
  • [] for array
  • {}用于对象文字和DOM节点
  • ""表示字符串
  • function () {return;} for functions
  • false for boolean
  • 为此,我不担心为Math,Date或RegExp类型预先指定类型。

答案 2 :(得分:1)

var a;
var b;
var c;

是更好的方法,因为它不会抛出未定义的错误。此外,变量的范围也适当。不在全球范围内。

var a=10;
    b=5;

将导致b在全球范围内。

编辑:这与最初发布的样本https://stackoverflow.com/revisions/9746359/2有关。通过更新的上下文,它可以归结为更多个人偏好。我的建议是不要为这些错误留下任何空间,因为很难找到它们。

答案 3 :(得分:0)

第二种选择在我的书中更好,因为它不那么多余。现代浏览器和IDE可以很容易地找到像你所说的错误。

这是一个显示会发生什么的jsFiddle。意外地在系列中插入分号会导致Uncaught ReferenceError。这是一个快速修复和较小的权衡,以获得更好的语法。如果这是您在编写JavaScript时必须处理的最糟糕的错误,那么您将度过美好的一天。

具有讽刺意味的是,你的第二个例子中有一个拼写错误 - a之后的分号。哎呦。 :)

编辑:原创海报固定拼写错误;我要离开了,因为它与原始问题有关。

答案 4 :(得分:0)

使用1 var。

进行变量的多重声明有一个好处

你可以使用较低的缩小脚本。显然,拥有var声明所需的4个字节在像stackoverflow.com这样的地方之前没有多大区别。基于一些额外的var声明,数以百万计的下载量= = gigs of transfer。