带逗号的JS语句分隔符

时间:2011-12-14 14:42:19

标签: javascript jquery

我发现了以下js示例,并且对语法感到困惑。请注意,语句由逗号而不是分号分隔。逗号是js中有效的语句分隔符吗?我以前没见过。

    $('selector').each(function () {

            this.onclick = function () {
                this.select();
            },

            this.onblur = function () {
            },

            this.onfocus = function () {
            },

            this.onkeyup = function () {
            }
    });

2 个答案:

答案 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

虽然您展示的代码是有效的,但我认为这不是一个好的模式。我会把它改成分号。