在JavaScript中使用逗号与分号?

给出以下代码

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'; } 

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

 a = 1, b = 2, c = 3 

意思是“评估a = 1 ,然后b = 2 ,然后c = 3 ,然后评估到expression式c = 3的值。

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

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

这就意味着“有三个语句要按顺序进行:将第一个expression式作为第一个语句,将第二个expression式作为第二个语句,将第三个expression式作为第三个语句”。

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

 var a = 1, var b = 2; 

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

(注意:你可以说

 var a = 1, b = 2; 

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

同样,你不能说

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

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

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

希望这可以帮助!

不,逗号有三个意思。

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

两个例子;

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

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

MDN

逗号运算符何时有用?

这真的没关系。 就我所知,使用逗号没有速度上的好处。

只要使用你喜欢的东西:)

这是什么JavaScript – 好的部分必须说:

逗号操作符会导致过度棘手的expression式。 它也可以掩盖一些编程错误。

JSLint希望看到逗号用作分隔符,但不能作为运算符(for语句的初始化和增量部分除外)。 它不指望在数组文字中看到消除的元素。 额外的逗号不应该被使用。 逗号不应出现在数组文字或对象文字的最后一个元素之后,因为它可能会被某些浏览器误解。

始终保持与惯例一致是最好的。 它可能是所有的分号或所有的逗号,我相信你更喜欢用分号而不是逗号。

没有速度增益,所以没有什么可担心的。