是否应引用Javascript对象键?

时间:2014-08-08 19:16:17

标签: javascript json

我知道有些问题可能会引用这个问题,但我没有发现任何与javascript有关的问题。

例如: JSON Spec - does the key have to be surrounded with quotes?

但我的问题是:我们在编写 Javascript 对象时是否应该使用引号?

我觉得写作更优雅没有引号也更易读,但是可以吗?

例如,当我用它作为参数传递时:

myFunction({
    "key": "value",
    "otherKey": 10
});


myFunction({
    key: "value",
    otherKey: 10
});

同样在我阅读时,第二个在每个浏览器中都有效,除非它是一个禁止的单词(for,if,etc),所以这不会有问题。

我认为第二个看起来更好,但我也认为这可能不是一个好习惯..

我做了多年的练习,现在我开始认为我错了,但我觉得使用引号感觉不错.. 我该怎么办?

3 个答案:

答案 0 :(得分:3)

如果它们是有效的标识符,则JavaScript不需要引用对象文字键。

以下所有对象文字形式在JavaScript中都是等效的(因为解释器始终将键转换为字符串):

var a = {foo: 1};
var b = {'foo': 1};
var c = {"foo": 1};

如果密钥不是有效的“标识符”,则必须仅引用密钥,例如:

var nonIdentifierKeys = {
  '=)': 'special characters',
  '  ': 'whitespace',
  '42': 'numbers',
  // etc.
};

请注意,JSON派生自JavaScript对象文字表示法,但明确需要引用键名(带双引号):

{"json":"must quote keys"}

答案 1 :(得分:3)

简答:JavaScript对象键不需要用引号括起来。

由于:

JSON和JavaScript中的对象文字语法是不同的东西,尽管它们密切相关。

JSON必须在服务器和客户端之间作为字符串传输。因此,所有值都需要包含在""中,以便在它们到达时将它们标记化,拆分并重新构建回对象。

javascript文字语法不必经过此传输,因此引号不是必需的。约定规定除非密钥有空格或是特殊的保留字,否则不要使用引号。

答案 2 :(得分:2)

您不必引用密钥,除非它们不是有效的标识符(例如,它们包含空格或它们是保留字)。对象文字语法与JSON不同。这可能是一个简单的偏好问题,但我只在需要时引用密钥。