Javascript 单线';var';声明,还是每行一个?

Javascript 单线';var';声明,还是每行一个?,javascript,jslint,Javascript,Jslint,我在看Douglas Crockford的文档,他说vars应该按字母顺序排列,每行一个 var a; // array of class names var c = node.className; // the node's classname var i; // loop counter 然而,(和jsHint)标准是在一行中声明它们,如果按照Crockford的方式执行,则会抛出此错误 太多的var语句 因此,jsLin

我在看Douglas Crockford的文档,他说
var
s应该按字母顺序排列,每行一个

var a;                  // array of class names
var c = node.className; // the node's classname
var i;                  // loop counter
然而,(和jsHint)标准是在一行中声明它们,如果按照Crockford的方式执行,则会抛出此错误

太多的var语句

因此,jsLint希望这样做

var a, c = node.className, i;
这对我来说似乎很矛盾,虽然在编程的整个范围内可能很小,但我希望在出错之前把它做好


当声明JavaScript变量时,一般公认的做法是什么?

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

争论主要是风格讨论,然而,更重要的是就标准达成一致,并让您的团队始终如一地使用标准

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

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

  // stuff..
}

即使是组合也可以。这都是关于偏好的。如果你与团队合作,那么询问偏好并保持一致

var a, 
    c = node.className, 
    i;
另一个选项(这是我使用的选项)是:

这清楚地表明了我声明的变量数量以及它们在某种程度上是相关的(因为我在同一个空间中声明它们,它们基本上总是相关的)。它还有助于区分已经有值的变量和没有值的变量。也就是说,我只声明变量而很少赋值


除非我使用的代码遵循不同的标准,否则我就是这么做的。这是最重要的:遵循项目的风格。否则,按你的喜好去做。如果你真的不在乎,用我的风格;)

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

var a, b, c;

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


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

我每行投票一个。每行投票一个;更容易阅读,依我看。如果你需要按字母顺序排列,我认为函数太大了……我倾向于每行做一个,但只有一个
var
语句(将以下标识符缩进到第一个标识符的相同位置)。但这只是个人品味的问题。哇,有争议的问题。有很多很好的答案,但也有很多接近票数的人。啊,是的,这很好。适合两个方向。没有违反jsLint,并且仍然遵守Crockford的标准。谢谢@jdc0589,这很有帮助。我想我不应该说“搞错”,因为我知道这两种方法都有效。我更倾向于普遍接受的方法,根据答案中的证据,它肯定指向这种方法。“让它变得清晰”?我不明白。快速浏览一下就会发现您声明了三个变量,因为有三行。然而,仔细检查会发现你实际上申报了四个。你真的认为用三行来声明四个变量是清楚的吗?
var a, b, c;
var a,
    b,
    c;