javascript - {active : "yes"} and {"active": "yes"}? 有什么区别

标签 javascript json

我使用 FireBug 测试了这两种情况,结果看起来非常相似:

>>> var x = {"active": "yes"}
>>> x.active
"yes"
>>> var x = {active: "yes"}
>>> x.active
"yes"

但我很确定这两者之间存在一些差异,甚至可能是与性能相关的差异。底线 - 我想知道 {active: "yes"} 和 {"active": "yes"} 之间是否有区别。

最佳答案

两者都有效。但是,有些关键字不能使用,例如 delete,因此为了避免将它们用引号引起来,这样它们就不会被 ECMAScript 解析器逐字处理,而是被明确指定为字符串。

另外,JSON spec要求键周围有引号:

A string begins and ends with
quotation marks

因此 {key:'value'} 不是有效的 JSON,而是有效的 JS,而 {"key":"value"} 是有效的 JS 和 JSON。

关键字和无效/不明确键的示例:

>>> ({delete:1})
SyntaxError: Unexpected token delete
>>> ({'delete':1})
Object

另一个例子:

>>> ({first-name:'john'})
SyntaxError: Unexpected token -
>>> ({'first-name':'john'})
Object
>>> ({'first-name':'john'})['first-name']
"john"

关于javascript - {active : "yes"} and {"active": "yes"}? 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3998798/

相关文章:

javascript - NVD3 Sparkline 无法从 CSV 文件正确渲染

javascript - 在 angularjs 中使用 'track by' 选择默认下拉列表不起作用

javascript - 如何将这些重复的 JavaScript 代码缩短为循环?

django HttpResponse 和 unicode

json - 使用 JQ 展平嵌套的 Json 对象

javascript - 调用jQuery插件函数时,第一次调用成功,再次运行,调用失败

php - 实时更新收件箱消息

json - Redis 添加 "\"到 JSON 字符串

javascript - 当父项中的选择发生更改时,如何重置依赖子项的值?

javascript - 我如何在meteorjs中返回包含函数的对象?