参见英文答案 >
why {key:value}[“key”] doesn’t work?1个
如果在Chrome控制台中我运行了正确的JSON:
如果在Chrome控制台中我运行了正确的JSON:
{"aaa":"bbb"}
我明白了:
SyntaxError: Unexpected token :
但是,如果我运行例如:
{aaa:"bbb"}
它不会抱怨.在下面运行也很好:
aaa={"aaa":"bbb"}
解决方法
问题是由语法/解析上下文引起的.
给定{“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.jb51.cc/js/156235.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。