注意:这个问题与Doug Crockford撰写的“JavaScript:The Good Parts”一书有关。 当我阅读有关Objects的章节时,我发现了如下声明:
如果名称是合法的JavaScript名称而不是保留字,则对象文字中属性名称周围的引号是可选的。因此,
"first-name"
需要引用,但在"first_name"
附近是可选的。
以下是本书中提供的对象文字的示例:
var stooge = {
"first-name": "Jerome",
"last-name": "Howard"
};
现在,我可能误解了这里的文字,但对我来说,看起来Crockford先生说 first-name
(带连字符)是一个保留字,而 {{ 1}} (使用下划线)不是。如果是这种情况,我不明白前者如何成为保留词。我在书中没有找到其他解释为什么会这样。有人可以解释一下吗?
答案 0 :(得分:13)
这不是保留字。如果没有引号,javascript会将-
字符解释为减法运算符,尝试执行操作并失败。
这样做的一个原因是javascript无论何时都喜欢忽略空格。因此2 - 3
与2-3
相同。
将整个事物放在引号中会导致js解释为另一个字符,而不是运算符。