带逗号的JS语句分隔符

Joh*_*ore 23 javascript jquery

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

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

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

            this.onblur = function () {
            },

            this.onfocus = function () {
            },

            this.onkeyup = function () {
            }
    });
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 22

逗号充当单个表达式语句中表达式之间的分隔符.因此,(如果它已经完成而不是在"onkeyup"函数之后被切断)只是一个表达式语句.

没有理由像这样编码,或者至少没有真正的理由.在这种特殊情况下,它与由分号分隔的一系列单独表达式语句具有基本相同的效果.

逗号"运算符"在许多情况下是有问题的,但有时很有用:

var index, len;
for (index = 0, len = list.length; index < len; ++index) { ... }
Run Code Online (Sandbox Code Playgroud)

例如.它允许一个人将一个以上的表达式(通常是赋值)放入一个只允许一个表达式的语法区域设置中.在我看来,这确实是语法弱点的表现.

  • 注意:如果有人对逗号运算符感兴趣 - 请参阅[this](http://javascriptweblog.wordpress.com/2011/04/04/the-javascript-comma-operator/). (6认同)
  • @dzejkej 学习 JS 细微差别的好网站!这种风格让我想起了当年的旧 C Primer 和 C++ Primer Plus 书籍。 (2认同)

sme*_*ola 11

每个赋值实际上都是一个表达式(不是语句); 和表达式可以连接成一个更大的表达式,其最终值只是最后一个子表达式的值; 例如

alert(  (w=1+1, x=2+3, y=3+3, z=4+4)  ); // shows 8
Run Code Online (Sandbox Code Playgroud)

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