当我在''中的函数中包含方法名称时有什么区别?

时间:2013-04-21 10:56:19

标签: javascript

我有以下代码:

 var factory = {
        query: function (selectedSubject) {
           ..
        }
 }

在Javascript中它与:

相同
 var factory = {
        'query': function (selectedSubject) {
           ..
        }
 }

我已经看过两者都使用了,我不确定是否有任何区别。

3 个答案:

答案 0 :(得分:3)

The standard要求属性名称为以下之一:

PropertyName :
   IdentifierName
   StringLiteral
   NumericLiteral

即所有这些都是有效的:

 obj = {
       "query": ....
       'query': ....
        query:  ....
        12e45:  ....
   }

请注意,与流行的观点相反,标准要求名称是有效标识符,只需要“标识符名称”。这实际上意味着您可以使用JS保留字作为属性名称:

x = {
    if: 100,
    function: 200,
}
console.log(x.if + x.function) // 300

并不是说它在日常编程中非常有用,只是一个值得了解的有趣事实。

答案 1 :(得分:2)

您可以同时使用两者,但如果有空格,则无法使用第一个选项。这就是为什么有第二种选择。

答案 2 :(得分:-1)

有效JSON要求“”包围匿名对象的属性名称,但如果属性名称不是保留字或不包含某些特殊字符,则可以省略它们。通常使用“”更安全。