Javascript 使用逗号还是分号?

Javascript 使用逗号还是分号?,javascript,syntax,Javascript,Syntax,给定以下代码: 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 = func

给定以下代码:

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

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

你喜欢什么就用什么:)

这就是我们要说的:

逗号运算符可能导致表达式过于复杂。它可以 还可以掩盖一些编程错误

JSLint希望看到逗号用作分隔符,而不是分隔符 运算符(除了在 (用于声明)。它不希望在数组中看到省略的元素 文字。不应使用额外的逗号。不应出现逗号 在数组文字或对象文字的最后一个元素之后,因为 它可能被一些浏览器误解


最好始终与惯例保持一致。要么全是分号,要么全是逗号,我相信你更喜欢在任何地方使用分号,而不是逗号


也没有速度提升,所以没什么好担心的。

不,逗号有三种含义

  • 对于变量声明,它只允许您在每个变量之前省略
    var
  • 对于表达式,“逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值。”
  • 函数声明和函数调用中有单独的参数,但这对每个程序员来说都是显而易见的
  • 两个例子

    alert((2,3)); //3
    
    请注意,var语句中的逗号不是逗号运算符,因为它不存在于表达式中。相反,在var语句中,将多个语句组合成一个语句是一个特殊的字符。实际上,该逗号的行为与逗号运算符几乎相同


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

    a = 1, b = 2, c = 3
    
    表示“计算
    a=1
    ,然后计算
    b=2
    ,然后计算
    c=3
    ,然后计算表达式
    c=3
    的值

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

    a = 1; b = 2; c = 3;
    
    var a = 1, b = 2;
    
    这意味着“有三条语句要按顺序执行:第一条表达式作为第一条语句求值,第二条表达式作为第二条语句求值,第三条表达式作为第三条语句求值。”

    在这一点上,两者并不完全可以互换。例如,你不能书写

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

    (注:你可以说

    a = 1; b = 2; c = 3;
    
    var a = 1, b = 2;
    
    因为该语言特别允许使用逗号作为声明语句语法的一部分。在这里,逗号不用作运算符。)

    同样,你也不能说

    a = (b = 1; c = 2);
    
    因为在这里,表达式的右侧必须是表达式,而不是语句,
    用于分隔语句。内部分号必须是逗号。(同样,这段代码一开始非常笨拙和不寻常,所以您可能根本不应该这样做!)

    从风格的角度来看,逗号运算符很少使用,而且不够晦涩,可能会让有能力的JavaScript程序员绊倒。因此,我强烈建议不要使用它,而是遵循JavaScript中关于使用分号终止语句的既定惯例,即使分号是等效的且从语法上讲,使用逗号分隔每个用作语句的表达式是合法的


    希望这有帮助!

    @Stevevallier,除了这个问题不是关于Java的。@Stevevallier这是一个javascript问题。语法将是无效的javaNote作为结束行标记,它们并不总是等价的。此代码段:
    var a=1,b=2
    将用一条var语句声明2个变量。但是在
    var a=1;b=2
    中现在
    b
    不再是var声明的一部分,它创建了一个隐式的全局
    b
    。\u asMan-人们可以将这个问题解释为“什么更好?”问题,这在SO社区中通常是不受欢迎的。我们喜欢有明确是或否答案的问题。询问最佳实践通常属于这是一个很好的问题,但它不属于这个网站。”(而且,这不是我的得票。)它可能会关闭,但我一直在想同样的事情。一篇及时的帖子。谢谢。3.函数声明和函数调用中的独立参数。是的,但这仍然是第三个含义。如果我们很挑剔,它还用于对象和数组文字符号,以及未来ES6+数据结构中可能的其他内容。为了不必用最新的语言来更新这个答案,我个人会把它改成“在数据结构和函数中明显使用逗号之外……”怎么可能在5分钟内写出所有这些呢?
    O\u O