【发布时间】:2016-02-05 11:18:46
【问题描述】:
Wikipedia says JSON 被设计为 JavaScript 的非严格子集,即添加允许使用一些 Unicode 字符。引用截至 2015-11-05 的当前版本:
虽然 JSON 通常被认为是 JavaScript 和 ECMAScript 的子集,但它允许在 JavaScript 和 ECMAScript 字符串中存在非法的字符串中的一些未转义字符。
但是.. 如果我将任何来自 Wikipedia 页面的示例粘贴到 ESLint 中,它会失败并出现错误。
例如我粘贴这个:
{
"id": 1,
"name": "Foo"
}
进入http://eslint.org/demo/ 并获取:
2:8 - 解析错误:意外令牌:(未定义)
由于某种原因,冒号在 JavaScript 中似乎是非法的,它与字符串中的未转义字符无关。
为什么人们仍将 JSON 称为 JavaScript 子集?
【问题讨论】:
-
你的 JSON 是一个无效的 EcmaScript,但却是一个有效的 JSON。
-
与其说是冒号,不如说是一个意外出现的对象。试试以
var x =为前缀。 (它会给你另一个错误,但它语法上没问题。) -
试试
var obj = { "id": 1, "name": "Foo" } -
就像
var x=1是 JS,并不意味着它可以在任何地方工作,例如var y= var x=2
标签: javascript json eslint