Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript {}/a/g中的/a/g是正则表达式还是除法?_Javascript_Regex_Grammar_Language Lawyer_Ecmascript 5 - Fatal编程技术网

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
例如,Chrome将其解释为后者和其他解析器

从规范的角度来看,
{}/a/g中的
/a/g
是正则表达式还是除法?

以下是我认为是规范的一部分:

没有任何句法语法上下文中,两者都是前导分词 或除法赋值,以及前导RegularExpressionLiteral是 允许

引述:

除法运算符必须跟在表达式和正则表达式之后 表达式文字不能跟在表达式后面,所以在所有其他情况下 您可以放心地假设您正在查看正则表达式文本

我的理解是,
{}
是一个表达式,即使是一个空的也是一个错误。因此,下面的
/a/g
必须是除法,而不是正则表达式文本


还是我错了?

不,
{}
在本例中不是表达式。引用注释标准的相关部分:“一个
表达式语句
不能以大括号开头,因为这可能使它与
不明确。”。在您的例子中,
{}/a/g
是一个块,后跟一个由正则表达式文字组成的表达式语句。

是什么让您认为{}是一个表达式,或者这只是一个语句?一个大括号通常被解释为一个块的开始。酷,这就是我错过的。