Javascript 为什么美元符号不再是“美元”;仅用于机械生成的代码?“;

Javascript 为什么美元符号不再是“美元”;仅用于机械生成的代码?“;,javascript,identifier,specifications,ecma262,Javascript,Identifier,Specifications,Ecma262,在第7.6节(“标识符”,第26页)中,我们看到以下注释: 美元符号仅用于机械生成的代码 这似乎是合理的。许多常用于生成或嵌入JavaScript的语言对$具有特殊意义,在这些语言的JavaScript标识符中使用它会导致错误 “机械生成条款”出现在第2版中。在第1版中,它不存在。从第5版开始,它再次消失,没有任何解释,并且保留在第6版的工作草案中 如果我不得不猜测的话,我会假设它最初被省略了,因为潜在的陷阱没有被考虑,然后在下一版本中,当它清楚地表明它是导致问题的时候被添加。不过,我想不出有什

在第7.6节(“标识符”,第26页)中,我们看到以下注释:

美元符号仅用于机械生成的代码

这似乎是合理的。许多常用于生成或嵌入JavaScript的语言对
$
具有特殊意义,在这些语言的JavaScript标识符中使用它会导致错误

“机械生成条款”出现在第2版中。在第1版中,它不存在。从第5版开始,它再次消失,没有任何解释,并且保留在第6版的工作草案中

如果我不得不猜测的话,我会假设它最初被省略了,因为潜在的陷阱没有被考虑,然后在下一版本中,当它清楚地表明它是导致问题的时候被添加。不过,我想不出有什么好的理由在第5版中再次删除它

对于规范中包含并随后删除“机械生成条款”(邮件列表、新闻组或其他地方的“书面记录”)是否有任何解释?我在任何地方都找不到这个文件


作为一个附带问题,有人能解释第6版草案背后的理由吗?这似乎会带来更多的麻烦,因为你根本看不到这些字符,我想不出任何理由你想要在标识符中包含这些字符


更新:最初包含的“机械生成代码”注释和包含的零宽度字符在下面codewaggle的回答中进行了解释。唯一需要回答的是这个问题的主要焦点,即删除“机械生成的代码”注释。

这里是一个开始:

似乎添加了“应该只用于机械生成的代码”,因为这是JAVA规范

D6)7.5:根据TR 10176中的建议,美元符号不应出现在标识符列表中。7.5字母和数字的定义应参考ISO/IEC 14652的“i18n”规范

>
操作:部分接受---ECMAScript遵循Java的先例。一条注释将补充说,$只应用于机械生成的代码 这是一个开始:

似乎添加了“应该只用于机械生成的代码”,因为这是JAVA规范

D6)7.5:根据TR 10176中的建议,美元符号不应出现在标识符列表中。7.5字母和数字的定义应参考ISO/IEC 14652的“i18n”规范



>
操作:部分接受---ECMAScript遵循Java的先例。一条注释将补充说,$只应用于机械生成的代码。这应该是。@JosephDreamer,为什么?我认为这是为了让JavaScript与其他语言内联languages@JasonSperske,我认为许多其他语言不允许在标识符中使用
$
。无论如何,我并不想讨论,而是想记录以前的讨论,我认为这是在做出这个决定之前的某个时刻发生的。这出现在Java语言规范中:“$character应该只在机械生成的源代码中使用,或者很少用于访问遗留系统上预先存在的名称”(第23页)这应该是。@JosephDreamer,为什么?我认为这是为了让JavaScript与其他语言内联languages@JasonSperske,我认为许多其他语言不允许在标识符中使用
$
。无论如何,我并不想讨论,而是想记录以前的讨论,我认为这是在做出这个决定之前的某个时刻发生的。这出现在Java语言规范中:“$character应该只在机械生成的源代码中使用,或者很少用于访问遗留系统上预先存在的名称”(第23页)关于ZWJ/ZWNJ和最初包含“机械生成代码”注释的有趣讨论,但是您是否发现了关于删除“机械生成代码”注释的任何内容?这才是我真正想要的。此外,答案中的格式在几个地方被破坏,
出现在引号中;我可能会过一会儿再修改。就像我说的,这是一个起点,而不是你问题三个部分的答案。请随意清理一下,我已经花了大量时间在研究上,并且在格式化方面做了第一步。如果人们觉得这些信息有用,那就太好了。如果没有,那么,任何人都可以自由地进行更多的研究和格式化。公平地说,我将更新问题,以表明部分问题已经得到了回答。清理格式,以便出现像
这样的字符序列。@DaggNabbit如果没有其他人提出它,我将重新检查,以适应它。当我有机会的时候,我想更仔细地阅读我找到的东西。关于ZWJ/ZWNJ和最初包含的“机械生成代码”注释的有趣讨论,但是你发现了关于删除“机械生成代码”注释的任何内容吗?这才是我真正想要的。此外,答案中的格式在几个地方被破坏,
出现在引号中;我可能会过一会儿再修改。就像我说的,这是一个起点,而不是你问题三个部分的答案。请随意清理一下,我已经花了大量时间在研究上,并且在格式化方面做了第一步。如果人们觉得这些信息有用,那就太好了。如果没有,那么,任何人都可以自由地进行更多的研究和格式化。公平地说,我将更新问题,以表明部分问题已经得到了回答。清理格式,以便出现像
这样的字符序列。@DaggNabbit如果没有其他人提出它,我将重新检查,以适应它。无论如何,当我有机会的时候,我想更仔细地阅读我找到的东西。 Code Unit Value Name Formal name
\u200C Zero width non-joiner <ZWNJ> \u200D Zero width joiner <ZWJ> \uFEFF Byte order mark (also called zero-width non-breaking space) <BOM>