对于javascript对象,对于它的属性,我通常不会向它添加单引号。我记得如果我在对象'属性中添加单引号,它将成为JSON?我是对的吗?
请看这段代码,两个代码都会输出对象的值。请解释我是否需要在对象的属性中添加单引号?
var test1 = {
foo: 'foo1',
bar: 'bar1'
};
alert(test1.foo);
var test2 = {
'foo': 'foo1',
'bar': 'bar1'
};
alert(test2.foo);
答案 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属性中,必须是字符串,字符串必须用"
个字符分隔。