Javascript {}/a/g中的/a/g是正则表达式还是除法?
我正在写一个()并且有一个关于正则表达式的有趣的例子。给你 考虑以下陈述:Javascript {}/a/g中的/a/g是正则表达式还是除法?,javascript,regex,grammar,language-lawyer,ecmascript-5,Javascript,Regex,Grammar,Language Lawyer,Ecmascript 5,我正在写一个()并且有一个关于正则表达式的有趣的例子。给你 考虑以下陈述: {}/a/g 我的问题:从规范的角度来看,它应该被解释为 ObjectLiteral除以标识符a除以标识符b或 Block后接RegularExpressionLiteral/a/g 例如,Chrome将其解释为后者和其他解析器 从规范的角度来看,{}/a/g中的/a/g是正则表达式还是除法? 以下是我认为是规范的一部分: 没有任何句法语法上下文中,两者都是前导分词 或除法赋值,以及前导RegularExpress
{}/a/g
我的问题:从规范的角度来看,它应该被解释为
除以ObjectLiteral
除以标识符a
或标识符b
后接Block
RegularExpressionLiteral/a/g
{}/a/g中的/a/g
是正则表达式还是除法?
以下是我认为是规范的一部分:
没有任何句法语法上下文中,两者都是前导分词
或除法赋值,以及前导RegularExpressionLiteral是
允许
引述:
除法运算符必须跟在表达式和正则表达式之后
表达式文字不能跟在表达式后面,所以在所有其他情况下
您可以放心地假设您正在查看正则表达式文本
我的理解是,{}
是一个表达式,即使是一个空的也是一个错误。因此,下面的/a/g
必须是除法,而不是正则表达式文本
还是我错了?不,
{}
在本例中不是表达式。引用注释标准的相关部分:“一个表达式语句
不能以大括号开头,因为这可能使它与块
不明确。”。在您的例子中,{}/a/g
是一个块,后跟一个由正则表达式文字组成的表达式语句。是什么让您认为{}是一个表达式,或者这只是一个语句?一个大括号通常被解释为一个块的开始。酷,这就是我错过的。