在JavaScript中使用逗号与分号?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

给出以下代码

var fn = function () {
    var x = 'x',
    y = 'y';
    this.a = 'a',
    this.b = 'b',
    this.c = 'c';
    this.d = 'd',
    this.e = 'e';   
}

你可以看到有两个组合。 使用其中一个或另一个会有什么好处?

我的理解是分号将结束语句。并且逗号应该用于串联多个声明。

那么可以肯定地说,在这个例子中,应该只有两个分号?

var fn = function () {
    var x = 'x',
    y = 'y';
    this.a = 'a',
    this.b = 'b',
    this.c = 'c',
    this.d = 'd',
    this.e = 'e';   
}
提问于
用户回答回答于

逗号运算符是一个可在表达式中使用的运算符。它用于分离出多个不同的表达式,并具有“评估所有以下表达式,然后生成最终表达式的值”的含义。例如:

a = 1, b = 2, c = 3

指“评估a = 1,然后b = 2,然后c = 3,然后评估对表达式的值c = 3

分号不是运算符,不能在表达式中使用。它被用作JavaScript语法的一部分来标记被视为语句的表达式的结尾。例如,你可以说

a = 1; b = 2; c = 3;

这意味着“有三条语句要按顺序执行:将第一个表达式作为第一个语句,将第二个表达式作为第二个语句,将第三个表达式作为第三个语句。”

在这方面,两者并不完全可以互换。例如,你不能写

var a = 1, var b = 2;

因为var a = 1var b = 2是语句,而不是表达式,因此不能用逗号分隔。你将不得不在这里使用分号。

(注意:你可以说

var a = 1, b = 2;

因为该语言特别允许使用逗号作为声明语句语法的一部分。这里,逗号不作为操作员使用。)

同样,你不能说

a = (b = 1; c = 2);

因为这里表达式的右边必须是表达式,而不是语句,并且;用于分隔语句。内部分号必须是逗号。(然后,这个代码首先是非常尴尬和不寻常的,所以你可能根本不应该这样做!)

从文体角度来看,逗号运算符很少被使用,并且足够模糊,以至于可能会跳出合理的JavaScript代码。因此,我强烈建议不要使用它,而应遵循JavaScript中建立的有关使用分号终止语句的约定,即使它们在语法上使用逗号分隔每个用作语句的表达式是等同的和语法上合法的。

用户回答回答于

不,逗号有三个含义。

  1. 使用变量声明,它只是让你省略var每个变量之前。
  2. 使用表达式,“逗号运算符评估它的两个操作数(从左到右)并返回第二个操作数的值。”
  3. 在函数声明和函数调用中分开参数,但这对每个程序员都是显而易见的。

两个例子;

alert((2,3)); //3

请注意,var语句中的逗号不是逗号运算符,因为它不存在于表达式中。相反,它是var语句中的一个特殊字符,可将它们中的多个合并为一个。但实际上,该逗号的行为几乎与逗号运算符相同。

扫码关注云+社区