我知道有些问题可能会引用这个问题,但我没有发现任何与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),所以这不会有问题。
我认为第二个看起来更好,但我也认为这可能不是一个好习惯..
我做了多年的练习,现在我开始认为我错了,但我觉得使用引号感觉不错.. 我该怎么办?
答案 0 :(得分:3)
以下所有对象文字形式在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)
由于:
JSON和JavaScript中的对象文字语法是不同的东西,尽管它们密切相关。
JSON必须在服务器和客户端之间作为字符串传输。因此,所有值都需要包含在""
中,以便在它们到达时将它们标记化,拆分并重新构建回对象。
javascript文字语法不必经过此传输,因此引号不是必需的。约定规定除非密钥有空格或是特殊的保留字,否则不要使用引号。
答案 2 :(得分:2)
您不必引用密钥,除非它们不是有效的标识符(例如,它们包含空格或它们是保留字)。对象文字语法与JSON不同。这可能是一个简单的偏好问题,但我只在需要时引用密钥。