我在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
?
答案 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
关键字来保存每个字节数。var
关键字将所有变量定义放在代码的顶部,它会在您的函数开始时提醒您它们已定义一次。