单行'var'声明,或每行一个?

时间:2012-02-09 21:30:20

标签: javascript jslint

我正在查看Douglas Crockford的Code Conventions for JavaScript文档,他说var应该是按字母顺序排列的,每行一个。

var a;                  // array of class names
var c = node.className; // the node's classname
var i;                  // loop counter

然而,jsLint(和jsHint)标准是在一行上声明它们,如果Crockford完成了它会抛出这个错误

  

var语句太多

因此,jsLint想要这样做。

var a, c = node.className, i;

这对我来说似乎很矛盾,虽然编程的整体范围可能相当微小,但我希望在我弄错之前做到这一点。

声明JavaScript变量时,普遍接受的做法是什么?

6 个答案:

答案 0 :(得分:13)

LINT需要一个var声明语句,但它可以分布在多行上。

var a, b, c;

var a,
    b,
    c;

它想要单个语句的原因是为了避免混淆哪些变量属于本地范围。使用单个var语句,所有本地范围的变量都包含在范围内的单个位置,任何人都可以快速读取代码以查看它们是什么。

进一步建议此声明语句位于作用域的顶部,因为JavaScript提升机制无论如何都会在执行之前将它们移动到那里。通过编写代码以期望该范围顶部的语句,提升机制不会导致任何意外行为。

答案 1 :(得分:3)

这两种方法都不对,但我通常更喜欢在代码块的开头使用单行样式声明。最重要的是要保持一致。例如:

function() {
  var foo = "bar",
      number = 123,
      etc = "...";

  // stuff..
}

答案 2 :(得分:3)

即使是组合也没关系。这完全取决于偏好。如果您正在与团队合作,那么询问偏好并保持一致。

var a, 
    c = node.className, 
    i;

答案 3 :(得分:2)

争论主要是风格讨论,但是,同意标准让您的团队始终如一地使用更为重要。

答案 4 :(得分:2)

另一种选择(我使用的是):

 var a = ...,
     b = ...,
     c, d;

这清楚地表明我声明了多少变量,并且它们都以某种方式相关(因为我在相同的空间中声明它们,它们基本上总是如此)。它还有助于区分已有值的变量和不具有值的变量。也就是说,我只是在没有很少分配的情况下声明变量。

除非我使用的是遵循不同标准的代码,否则这就是我的工作。这是最重要的事情:遵循项目的风格。否则,请按您的喜好选择。如果你真的不在乎,请使用我的风格;)

答案 5 :(得分:0)

您可以声明多个变量并将它们分配到同一行。这是个人喜好的问题。