在JSON键中使用加引号的字符串有实际的理由吗?

在JSON键中使用加引号的字符串有实际的理由吗?,第1张

在JSON键中使用加引号的字符串有实际的理由吗?

为何将JSON键放在引号中的真正原因取决于ECMAscript 3标识符的语义

不带引号的保留字不能用作对象文字中的
属性名称 ,例如:

({function: 0}) // SyntaxError({if: 0}) // SyntaxError({true: 0}) // SyntaxError// etc...

如果使用引号,则属性名称有效:

({"function": 0}) // Ok({"if": 0}) // Ok({"true": 0}) // Ok

自己的Crockford在本次演讲中对此进行了解释,他们希望保持JSON标准的简单性,并且不希望对其具有所有这些语义限制:

....

那是我们发现未引用名称的问题。事实证明,ECMA script
3具有一些保留字策略。保留字必须在关键位置加引号,这确实很麻烦。当我开始将其制定为标准时,我不想将所有保留字都放入标准中,因为它看起来确实很愚蠢。

当时,我试图说服人们:是的,您可以使用Javascript编写应用程序,它实际上可以正常工作,并且是一种很好的语言。那么,我不想同时说:看看他们所做的这件事真是愚蠢!因此,我决定让我们只引用这些键。
这样,我们就不必告诉任何人它的重制了。

这就是为什么到目前为止,键都用JSON引用。

现在,ECMAscript 5th Edition
Standard在ES5实现中解决了此问题,即使对象字面量和成员访问权限中,甚至保留字也可以不带引号使用(

obj.function
在ES5中是确定的)。

仅作记录,该标准已由软件供应商实施,您可以在此兼容性表上查看哪些浏览器包含此功能(请参阅 保留字作为属性名 )。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5477530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存