"名字"如何成为JavaScript中的保留字?

Bin*_*Cat 6 javascript reserved-words object-literal

注意:这个问题与Doug Crockford撰写的"JavaScript:The Good Parts"一书有关. 当我阅读有关Objects的章节时,我发现了如下声明:

如果名称是合法的JavaScript名称而不是保留字,则对象文字中属性名称周围的引号是可选的.所以周围需要引用"first-name",但周围是可选的"first_name".

以下是本书中提供的对象文字的示例:

var stooge = {
    "first-name": "Jerome",
    "last-name": "Howard"
};
Run Code Online (Sandbox Code Playgroud)

现在,我可能误解了这里的文字,但对我来说,似乎Crockford先生说 first-name(带连字符)是一个保留字,而first_name(带有下划线)则不是.如果是这种情况,我不明白前者如何成为保留词.我在书中没有找到其他解释为什么会这样.有人可以解释一下吗?

小智 13

这不是一个保留的词.如果没有引号,javascript会将-字符解释为减法运算符,尝试执行操作并失败.

其中一个原因是javascript更愿意随时忽略空格.因此2 - 3是一样的2-3.

将整个事物放在引号中会导致js解释为另一个字符,而不是运算符.