JSON标准以一种方式定义了对象,而ECMAScript(JavaScript)标准则以另一种方式定义对象。
人们常说JSON对象是JavaScript对象的子集,这是真的吗?
每个JSON对象也都是一个有效的JavaScript对象吗?
JSON标准以一种方式定义了对象,而ECMAScript(JavaScript)标准则以另一种方式定义对象。
人们常说JSON对象是JavaScript对象的子集,这是真的吗?
每个JSON对象也都是一个有效的JavaScript对象吗?
2019更新:根据这个提案和遵循ECMAScript 2019(含)之后版本的JavaScript,现在可以正常替代。
答案是“不行”。有些情况下,JSON对象在JavaScript中不会有效。JSON并非JavaScript的子集。
JSON
也就是说:根据JSON规范,你可以在任何字符串中安全地使用一些字符,比如U+2028。它是一个unicode空格字符,而不是控制字符或其他特殊字符。
JavaScript
现在讲解 JavaScript。ECMA-262 中对字符串的定义有一点不同。在 第7.8.4节 中,有一项规定,字符串可以包含除引号、反斜杠或行终止符之外的所有内容。那么什么是行终止符呢?它在 第7.3节 中:
正如您所看到的,在 JavaScript 中,符号U+2028和U+2029是不允许的。
这只是一个示例,但由于我们至少有一个不同的情况,因此足以意识到答案是否定的。
图片来源和完整描述:timelessrepo
{"x": 1e99999}
在语法上是一个有效的JavaScript对象,但在语义上超出了JavaScript的范围(因为双精度浮点数无法容纳如此大的数字)。 - Benjamin Gruenbaum