jQuery - 逗号与分号

时间:2016-08-10 21:46:01

标签: jquery

我正在处理前一个开发人员编写的一些jQuery代码。我试图了解一个人何时/为什么使用逗号分隔语句而不是分号。

在下面的示例中,使用逗号分隔语句没有任何好处是安全的吗?如果是的话...为什么,如果没有......是否存在使用逗号有意义的情况?

仅供参考:这个问题是关于链接陈述以及是否有益处。不是关于逗号在语句中的作用。

var $some_field_1, $some_child_field, $some_field_2, $some_child_field_2;

function a() {

    $some_field_1 = jQuery(".field_class"), $some_child_field = $some_field_1.find("input"), RunSomeFunction(), $some_field_2 = jQuery(".field_class_2"), $some_child_field_2 = $some_field_2.find("input");

}

VS

var $some_field_1, $some_child_field, $some_field_2, $some_child_field_2;

function a() {

    $some_field_1 = jQuery(".field_class");

    $some_child_field = $some_field_1.find("input");

    RunSomeFunction();

    $some_field_2 = jQuery(".field_class_2");

    $some_child_field_2 = $some_field_2.find("input");

}

我希望这是有道理的。谢谢大家!

1 个答案:

答案 0 :(得分:6)

通常,逗号用于分隔变量声明,但您显示的版本是使用它们来分隔表达式。虽然这很细微,但仍然很重要。

请注意,所有表达式都将变量名称分配给全局范围(在您的示例中,技术上是词法环境,这些变量可能在更局部的范围内定义而不是全局范围)。

一个更好的例子就是

var one = 1, two = 2, sum = function(a,b){ return a+b; };

请注意,如果您尝试在变量声明中调用函数,则会导致 Uncaught SyntaxError: Unexpected token (

由于所有声明本身都以var为前缀,因此是局部变量(在变量环境中)。

将示例与

对比
one = 1, two = 2, sum = function(a,b){ return a+b; }, sum(one,two);

本质上是你问题中的例子,差异主要是变量的范围,而且每个只是一个表达式,允许函数调用。

有关Comma operatorMDN

的更多信息