Javascript 评论是否在所有主要环境中都是100%安全的?

Javascript 评论是否在所有主要环境中都是100%安全的?,javascript,syntax,comments,Javascript,Syntax,Comments,在解析之前,注释实际上是从源代码中剥离出来的,还是它们可以算作换行符并在某些上下文中破坏连续性 'foo'.replace(/f/, 'b') //f->b .replace(/o/, 'a') //o->a .replace(/o/, 'r') /*o->r*/ ; 'foo'.replace(/x/, /*matches "x"*/ 'y'); var foo = ( true !== false ) ? // bikeshed

在解析之前,注释实际上是从源代码中剥离出来的,还是它们可以算作换行符并在某些上下文中破坏连续性

'foo'.replace(/f/, 'b') //f->b
     .replace(/o/, 'a') //o->a
     .replace(/o/, 'r') /*o->r*/ ;

'foo'.replace(/x/, /*matches "x"*/ 'y');

var foo = ( true !== false ) ? // bikeshed
          'bar' : /*if they're equal, which they won't be, we'll want 'baz'*/ 'baz';

你知道,因为他们说空白是“安全的”和“无关紧要的”或其他什么,但我们都知道有例外。评论真的安全吗?

是的,评论是安全的

(也就是说,我看到一些损坏的服务器端HTML缩略器,它们不知道内联JavaScript是什么,并删除了所有的换行符。以
/
开头的注释会删除整个脚本。)

如果在解析之前将它们删除,则在解析过程中会忽略它们,解析器需要扫描输入两次

但是,不考虑线条末端的线条终止符 成为单行注释的一部分;它由以下机构单独确认: 词汇语法,并成为输入元素流的一部分 对于句法语法。这一点非常重要,因为它 意味着是否存在单行注释并不重要 影响自动插入分号的过程


源代码被标记为注释不存在

我想是的,除非您使用的编译器/解析器中存在解析错误。Epic问题,这意味着以前有人问过它。有吗?不管怎样,标记语法highlighter正在做的就是happen@qwertymk你是基于WTF的吗?另请看,如果你能引用任何来源,我会在10分钟内接受这一点。@adlwalrus,我的来源是,15年来,我没有看到浏览器弄糟JavaScript评论。如果你不想相信,那好吧。不管怎么说,亚历克斯的答案是更好的,还有他的解释。@adlwalrus,如果你想要规格:在我的书中,这是一个非常好的来源,我100%愿意相信它。我只是想知道你是基于什么。你谦虚地建议我接受别人,我会投你一些赞成票的。我想,在29.3公里的重复赛中,积分不足早已不再是令人沮丧的原因,琐碎的事情也随之消失了:P也是为规范链接而培养的。
abc/*是注释*/def
一个标识符(
abcdef
)还是两个标识符(
abc
,后跟
def
)?好问题,@j_random_hacker@alex,他不关心规范,他只对浏览器的实现感兴趣,显然。@adlwalrus是的,“代码”> \n>代码>是为了ASI规则而保存的。@ AdLalurs:谢谢,尽管JavaScript是C++的,依赖于一个解释程序/编译器来“正确”是有问题的:C++中的规则是注释变成单个空间。类似的情况是
x++/*Comment*/+