我发现了以下js示例,并且对语法感到困惑。请注意,语句由逗号而不是分号分隔。逗号是js中有效的语句分隔符吗?我以前没见过。
$('selector').each(function () {
this.onclick = function () {
this.select();
},
this.onblur = function () {
},
this.onfocus = function () {
},
this.onkeyup = function () {
}
});
答案 0 :(得分:20)
逗号充当单个表达式语句中表达式之间的分隔符。因此,(如果它已经完成而不是在“onkeyup”函数之后被切断)只是一个表达式语句。
没有理由这样编码,或者至少没有真正的理由。在这种特殊情况下,它与由分号分隔的一系列单独表达式语句具有基本相同的效果。
逗号“运算符”在许多情况下都值得怀疑,但有时很有用:
var index, len;
for (index = 0, len = list.length; index < len; ++index) { ... }
例如,。它允许一个人将一个以上的表达式(通常是赋值)放入一个只允许一个表达式的语法区域设置中。在我看来,这确实是语法弱点的表现。
答案 1 :(得分:11)
每个作业实际上都是一个表达(不是陈述);和表达式可以连接成一个更大的表达式,其最终值只是最后一个子表达式的值; e.g。
alert( (w=1+1, x=2+3, y=3+3, z=4+4) ); // shows 8
虽然您展示的代码是有效的,但我认为这不是一个好的模式。我会把它改成分号。