奇怪的while循环元组



我正在编写一个JavaScript解析器,在prototype.js库上测试它时,它在以下代码上抛出了一个错误:

第4000行:

while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
    soFar = m[3];
    parts.push( m[1] );
    if ( m[2] ) {
        extra = m[3];
        break;
    }
}

我把它简化为:

while ( (a, b) == c ) {}

这真的是有效的JavaScript吗?根据ECMA-262,while循环具有以下语法:

while ( Expression ) Statement

(a, b) == c是什么样的表达式?我认为JavaScript不支持元组?

这不是元组;这是逗号运算符(另请参阅维基百科)。逗号运算符计算第一个操作数,然后计算第二个操作数并得出第二个的值。

最新更新