以下代码有效吗?
function test() {
return /\//.exec("\/");
}
alert(test());
似乎许多JavaScript简化程序(包括http://jscompress.com/处的jsmin)都将第二行中的“//”视为注释的开始。我认为这是“平凡”实现的缩小器中的错误,因为我尝试的所有浏览器实现都没有问题地运行它。 Try it on jsfiddle。
最佳答案
我有兴趣在规格中查找它,并且据此有效:
RegularExpressionLiteral ::
/ RegularExpressionBody / RegularExpressionFlags
RegularExpressionBody ::
RegularExpressionFirstChar RegularExpressionChars
RegularExpressionChars ::
[empty]
RegularExpressionChars RegularExpressionChar
RegularExpressionFirstChar ::
RegularExpressionNonTerminator but not * or \ or / or [
RegularExpressionBackslashSequence
RegularExpressionClass
RegularExpressionChar ::
RegularExpressionNonTerminator but not \ or / or [
RegularExpressionBackslashSequence
RegularExpressionClass
RegularExpressionBackslashSequence ::
\ RegularExpressionNonTerminator
RegularExpressionNonTerminator ::
SourceCharacter but not LineTerminator
\/
被视为RegularExpressionBackslashSequence
,因此是RegularExpressionBody
的一部分,因此不能成为//
注释标记的一部分。