为什么JSON是JavaScript的子集?

ana*_*nik 1 javascript json eslint

维基百科说,JSON被设计为JavaScript的非严格子集,即添加允许使用某些Unicode字符.引用当前版本截至2015-11-05:

虽然JSON通常被认为是JavaScript和ECMAScript的子集,但它允许在JavaScript和ECMAScript字符串中非法的字符串中使用非转义字符.

但是..如果我在ESLint中粘贴维基百科页面中的任何示例,则会失败并显示错误.

例如我粘贴这个:

{
  "id": 1,
  "name": "Foo"
}
Run Code Online (Sandbox Code Playgroud)

进入http://eslint.org/demo/并获取:

2:8 - 解析错误:意外的令牌:(未定义)

由于某种原因,看起来冒号在JavaScript中是非法的,它不是关于字符串中未转义的字符.

为什么人们仍然将JSON称为JavaScript子集?

Pau*_*oub 6

JSON是JavaScript 对象表示法的子集.你不能只是无处声明一个物体.

该对象的JavaScript用法是将其分配给变量:

var o = {
  "id": 1,
  "name": "Foo"
};
Run Code Online (Sandbox Code Playgroud)

或将其传递给一个函数:

console.dir( {"id": 1, "name": "Foo" } );
Run Code Online (Sandbox Code Playgroud)

等等