为什么要在对象的属性中添加单引号

时间:2017-09-18 19:15:45

标签: javascript

对于javascript对象,对于它的属性,我通常不会向它添加单引号。我记得如果我在对象'属性中添加单引号,它将成为JSON?我是对的吗?

请看这段代码,两个代码都会输出对象的值。请解释我是否需要在对象的属性中添加单引号?

var test1 = {
    foo: 'foo1',
  bar: 'bar1'
};
alert(test1.foo);

var test2 = {
    'foo': 'foo1',
  'bar': 'bar1'
};
alert(test2.foo);

https://jsfiddle.net/azp9wj0x/

2 个答案:

答案 0 :(得分:2)

请记住,JSON只与JavaScript线性相关,而且是a spec separate from JavaScript itself

单引号有效的JSON。双引号是。但这是无关紧要的,因为这是JavaScript代码,并且就你如何定义事物而言更加宽容。

JSON只有在您为应用程序之外的传输序列化时才会发挥作用。在这种情况下,确定数据的方式并不重要:

var test1 = {
  foo: 'foo1',
  bar: 'bar1'
};

JSON.stringify(test1, null, 2);

无论您使用单引号,双引号还是根本没有引号,它都会正确编码为JSON。

答案 1 :(得分:2)

ES5中对象文字中的属性名称可以是标识符或字符串文字(ES6会添加更多选项,但是by by by)。

没有引号,它是一个标识符。使用引号,它是一个字符串。

使用字符串可以使用非有效标识符的属性名称(例如带有空格的属性名称)。

这与JSON无关。 JavaScript是JavaScript。 JSON是JSON。

JSON是一种受JavaScript文字语法启发的数据格式。在JSON属性中,必须是字符串,字符串必须用"个字符分隔。