2011-08-28 70 views
1

可能重复:
What is the difference between object keys with quotes and without quotes?在javascript中,`{foo:“bar”}`和`{“foo”:“bar”}`有什么区别?

是什么之间的区别和b如下?

var a = {foo : "bar"}; 
var b = {"foo" : "bar"}; 
+0

请参阅http://stackoverflow.com/questions/4348478/is-difference-between-object-keys-with-quotes-and-without-quotes – Donovan

+0

堆栈溢出要求您[做一些努力](http:///stackoverflow.com/questions/how-to-ask)在问问题之前,你看过Javascript标准吗? –

+0

已经说过了,但我再说一遍:你的代码片段中没有JSON。 –

回答

5

没有区别。

object literal中的密钥可以是标识符或字符串文字。您可以使用字符串中不能用于标识符的字符,但foo不包含任何字符。

(顺便说一句,如果你在写JSON而不是JS,那么关键就必须是一个字符串)

+0

但是如果'foo'是可变的,例如有'var foo =“moo”;'它不会导致密钥成为变量的值吗? –

+2

@Shadow - no。对象文字语法中不能使用变量作为键。 – Quentin

+0

谢谢,我很困惑与阅读的关键:http://jsfiddle.net/nstKg/ –

6

两者都是有效的JavaScript对象常量,并评估不同的对象与性质称为foo,与a.foo == b.foo为真。

由于您标记了这个,第一个语句是无效的JSON,因为键需要是字符串(除了var a声明)。

+4

它也是无效的JSON,因为它里面有'var ='和';'。 – Quentin

1

它们是相同的。

带引号的语法允许设置非有效标识符(如foo bar)或保留关键字(如for)的密钥。

JSON只允许引用语法。

相关问题