许多语言在语法中都有以下几个规则,禁止使用尾随逗号:
call-expr: ident '(' expr-list? ')';
expr-list: expr | expr-list ',' expr;
但是,以下公式允许(但不要求)尾随逗号,其中包含well-known advantages:
call-expr: ident '(' expr-list? expr? ')';
expr-list: expr ',' | expr-list expr ',';
是否有任何缺点总是使用它,至少在内部?
答案 0 :(得分:1)
缺点是允许空条目的含糊不清。考虑Javascript中的以下数组:
[1,,3]
[1,,3,]
它们相同吗?它们的长度是否相同?应该是吗? (答案:是的,但不是IE< = 7)
答案 1 :(得分:1)
允许保留过程参数的语言(我特别想到旧的HP系统语言SPL;可能还有其他语言)会因此失败,因为编译器会假设在跳过参数之后该过程不需要的尾随逗号。我承认这是一个小缺点 - 另一方面,IMO所述的利益同样很小。