JavaScript Object表示法是否适合JSON?

前端之家收集整理的这篇文章主要介绍了JavaScript Object表示法是否适合JSON?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > why {key:value}[“key”] doesn’t work?1个
如果在Chrome控制台中我运行了正确的JSON:
{"aaa":"bbb"}

我明白了:

SyntaxError: Unexpected token :

但是,如果我运行例如:

{aaa:"bbb"}

它不会抱怨.在下面运行也很好:

aaa={"aaa":"bbb"}

我认为正确的JSON必须有用引号括起来的属性名称,为什么会发生这种情况呢? JS对象表示法不是正确的JSON吗?

解决方法

问题是由语法/解析上下文引起的.

给定{“aaa”:“bbb”}作为程序,这是一个Block [statement],其中“aaa”是一个字符串,后跟一个冒号,因此是无效的语法.它可以最低限度地复制为:“aaa”:“bbb”,因为括号什么也没做,只会增加混乱.

给定{aaa:“bbb”}作为程序,这是一个声明,其中aaa(标识符)是Label,后跟字符串“bbb”(也在语句上下文中).它很好,但它不会返回一个对象.同样,它等同于语句上下文中的aaa:“bbb”.

给定aaa = {“aaa”:“bbb”}作为程序,现在{…}在表达式上下文中被解析并被视为Object Literal;生成的对象将分配给变量.可以使用其他语法结构强制表达式上下文,例如{“aaa”:“bbb”},({“aaa”:“bbb”}),或者更有用的是,console.log({“aaa”:“bbb” “}).

尽管如此,因为JavaScript Object Literal语法根本不适用于三种情况中的两种:

JSON是almost-but-not-quite JavaScript对象文字的正确子集;使用适当的JSON工具和验证.

原文链接:https://www.f2er.com/js/156235.html

猜你在找的JavaScript相关文章