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