与jQuery中的分号相比,逗号有什么好处?

时间:2011-06-08 15:09:36

标签: jquery

  

可能重复:
  Declaring Multiple Variables in JavaScript

我在jQuery中设置了一些变量,有人建议我这样做:

var $wrapper = that.parents(".wrapper"),
$prettyCheckBox0 = $wrapper.find(".prettyCheckbox small:eq(0)"),
$prettyCheckBox1 = $wrapper.find(".prettyCheckbox small:eq(1)"),
$prettyCheckBox2 = $wrapper.find(".prettyCheckbox small:eq(2)"),
standard = $prettyCheckBox0.parents("span").parents("label").prev("input").val(),
professional = $prettyCheckBox1.parents("span").parents("label").prev("input").val(),
premium = $prettyCheckBox2.parents("span").parents("label").prev("input").val();

虽然这有效,但我想知道是否有人有理由为什么选择逗号而不是分号。它是如何工作的?看起来它会导致语法错误。另外,为什么有一个var

5 个答案:

答案 0 :(得分:5)

问题的结尾包含了开头的答案:var可用于在同一语句中定义多个变量,如下所示:

var a = 1, b = "foo", bar = xyzzy(), baz = $('#something');

这是您的代码段中发生的事情,它等同于

var a = 1;
var b = "foo";
var bar = xyzzy();
var baz = $('#something');

选择其中一个没有客观的好处,这是编码风格/惯例的问题。

答案 1 :(得分:3)

您发布的示例是一个包含多个var声明的长行。

在末尾加上一个分号将要求你每次都重复var关键字(以保持技术上的相同):

var $wrapper = that.parents(".wrapper");
var $prettyCheckBox0 = $wrapper.find(".prettyCheckbox small:eq(0)");
// and so on

我不确定两者在技术上是否更好。我个人更喜欢半冒号并重复我的var关键字,所以所有内容都相同,更易读,更易于维护,因为我不必担心在添加新声明时缺少逗号(但这完全是个人偏好)。

答案 2 :(得分:2)

基本上,您已经使用名称和初始化程序定义了逗号分隔的变量列表,这就是您不需要重复var的原因。

在分号上使用逗号的主要优点可能是您不必经常键入var。否则,这两种机制基本相同。

答案 3 :(得分:1)

认为那是因为在javascript中,你可以初始化变量,如:

var $a=0,$b=2;

对于小变量看起来很好,但我觉得它看起来很难看,并且对于大型操作(例如你的例子)来说它的可维护性很差。为了便于阅读,当你为一个变量设置一个大行时,我会坚持使用分号。

比较

var $wrapper         = that.parents(".wrapper");
var $prettyCheckBox0 = $wrapper.find(".prettyCheckbox small:eq(0)");
var $prettyCheckBox1 = $wrapper.find(".prettyCheckbox small:eq(1)");
var $prettyCheckBox2 = $wrapper.find(".prettyCheckbox small:eq(2)");
var standard         = $prettyCheckBox0.parents("span").parents("label").prev("input").val();
var professional     = $prettyCheckBox1.parents("span").parents("label").prev("input").val();
var premium          = $prettyCheckBox2.parents("span").parents("label").prev("input").val();

如果有任何性能差异,则可以忽略不计。但是这个版本对于程序员来说更容易阅读和理解。还有一些变量有'$'而有些变量没有....这是有意的吗?

答案 4 :(得分:1)

查看MDC docs for the var keyword

您可以使用var关键字一次,并一次初始化多个变量。这有几个好处:

  • 文件的大小。您可以通过错过var关键字来保存每个字节数。
  • 代码清洁度。您可以很好地缩进代码(您的示例不会这样做),因此您可以一目了然地看到所有代码行都是初始化变量。
  • 逻辑。变量定义将始终由JS解析器“提升”到函数的顶部。如果您使用一个var关键字将所有变量定义放在代码的顶部,它会在您的函数开始时提醒您它们已定义一次。