javascript 使用逗号还是分号?

jecbmhm3  于 2022-12-25  发布在  Java
关注(0)|答案(4)|浏览(224)

给定以下代码:

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

qv7cva1a1#

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

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);

因为这里表达式的右边必须是表达式,而不是语句,并且;用于分隔语句,所以内部的分号必须是逗号。(再说一遍,这段代码一开始就非常笨拙和不寻常,所以你可能根本不应该这样做!)
从风格的Angular 来看,逗号操作符很少使用,而且很难理解,可能会让相当称职的JavaScript程序员犯错误。因此,我强烈建议不要使用它,而是遵循JavaScript中关于使用分号终止语句的既定约定,即使使用逗号分隔用作语句的表达式在语法上是等效和法律的的。

44u64gxh

44u64gxh2#

不逗号有三种意思。
1.对于变量声明,它只允许您省略每个变量前面的var
1.对于表达式,“逗号运算符计算其两个操作数(从左到右),并返回第二个操作数的值。"
1.在函数声明和函数调用中分离参数,但这对每个程序员来说都应该是显而易见的。
示例2;

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

注意,var语句中的逗号不是逗号操作符,因为它不存在于表达式中。相反,它是var语句中的一个特殊字符,用于将多个var语句合并为一个。实际上,逗号的行为与逗号操作符几乎相同。
MDN
When is the comma operator useful?

nhn9ugyo

nhn9ugyo3#

这真的不重要。据我所知,使用逗号对速度没有任何好处。
就用你喜欢的:)
这就是 JavaScript - The Good Parts 的意思:
逗号运算符可能导致表达式过于复杂,它还可能掩盖一些编程错误。
JSLint希望看到逗号用作分隔符,而不是用作运算符(for语句的初始化和增量部分除外)。它不希望看到数组文本中的省略元素。不应使用额外的逗号。逗号不应出现在数组文本或对象文本的最后一个元素之后,因为它可能会被某些浏览器误解。

qybjjes1

qybjjes14#

最好始终保持与约定一致。要么全部使用分号,要么全部使用逗号,我敢肯定您更喜欢在任何地方使用分号而不是逗号。
也没有速度增益,所以没有什么可担心的。

相关问题