ECMAScript的报价:
MultiLineComment ::
/* MultiLineCommentCharsopt */
MultiLineCommentChars ::
MultiLineNotAsteriskChar MultiLineCommentCharsopt
* PostAsteriskCommentCharsopt
PostAsteriskCommentChars ::
MultiLineNotForwardSlashOrAsteriskChar MultiLineCommentCharsopt
* PostAsteriskCommentCharsopt
MultiLineNotAsteriskChar ::
SourceCharacter but not *
MultiLineNotForwardSlashOrAsteriskChar ::
SourceCharacter but not one of / or *
如果我理解正确,则/***/
或/*/*/
之类的记录应该会导致错误,但是不会发生。为什么会发生?
我在Google chrome,firefox,opera和maxthone中检查了此
答案 0 :(得分:3)
/***/
:
外部/*
... */
是MultilineComment的模式,因此内部*
必须匹配MultilineCommentChars。现在,如果您看到,您将看到:
MultiLineCommentChars ::
* PostAsteriskCommentChars [opt]
实际上可以只是一个*
,因为以下部分是可选的(这就是[opt]
的意思)。
/*/*/
:
外部还是MultilineComment模式,/
必须与MultilineCommentChars匹配,
MultiLineCommentChars ::
MultiLineNotAsteriskChar MultiLineCommentChars [opt]
和/
是MultilineNotAsteriskChar的一部分。
现在整个区域仅用于防止MultilineComment中的*/
,/**/*/
无效,/*/**/
不是。