JS中的对象文字符号差异

Erv*_*vin 5 javascript coding-style

JavaScript如何处理以下两个声明之间有区别吗?

var foo = {
    foo : true,
    bar : 1
};

var foo2 = {
    "foo" : true,
    "bar" : 1
};
Run Code Online (Sandbox Code Playgroud)

JavaScript似乎对待它们是一样的.如果它们真的相同那么,是否有"正确"或首选方式来声明这一点?

mae*_*ics 3

任何一种形式都适合“初始化”对象(也称为声明对象文字)。

\n\n

属性标识符可以是名称、数字或字符串,但它们都被解释为字符串:

\n\n
var foo = {\n  foo  : true,\n  "bar": true,\n  3    : true\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

有关更多详细信息,请参阅 ECMA-262 第 5 版语言规范 \xc2\xa7 11.1.5 。

\n\n

请注意,PropertyName构造可能在第 5 版中发生了变化(就像许多事情一样),因此不支持最新版本 JavaScript 的浏览器可能会实现不同版本的 ECMAScript。

\n\n

另请注意,JSON 将对象定义为字符串/值对的集合,并且字符串用引号引起来:

\n\n
var fooJSON = \'{"foo":true,"bar":true,"3":true}\';\n
Run Code Online (Sandbox Code Playgroud)\n