我正在编写一个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不支持元组?
这不是元组;这是逗号运算符(另请参阅维基百科)。逗号运算符计算第一个操作数,然后计算第二个操作数并得出第二个的值。