在javascript中,`{foo:“bar”}`和`{“foo”:“bar”}`之间有什么区别?

时间:2011-08-28 10:08:48

标签: javascript json

  

可能重复:
  What is the difference between object keys with quotes and without quotes?

a和b之间有什么区别?

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

3 个答案:

答案 0 :(得分:6)

两者都是有效的JavaScript对象文字,并使用名为foo的属性评估到不同的对象,a.foo == b.foo为真。

由于您标记了此,因此第一个语句是无效的JSON,因为密钥必须是字符串(除var a声明之外)。

答案 1 :(得分:5)

没有区别。

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

(顺便说一句,如果您正在编写JSON而不是JS,那么密钥必须是一个字符串)

答案 2 :(得分:1)

他们是一样的。

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

JSON仅允许引用的语法。