以下代码段在IE 10 JS控制台和Chromes JS控制台中执行。 fiddle
alert({123:"ABC"}[123]);
然而,当通过linter(例如jslint.com)运行时,它会抱怨。
当我阅读json.org中的文档时,我理解以下内容
表示在JSON对象中使用数字作为名称是不正确的。那么这是否意味着至少V8和Chakra引擎不正确?或者这与严格模式有关(如果确实如此,当我在节点中测试时它似乎没有任何效果)?
答案 0 :(得分:3)
您将Javascript文字语法与JSON语法混淆。 JSON是Javascript文字语法的受限子集。
可以找到ECMAScript对象初始化程序的规范here。它包含以下产品:
PropertyName : IdentifierName StringLiteral NumericLiteral
因此允许使用数字作为属性名称。
答案 1 :(得分:0)
以下是正确的:
var jsonString = {"123":"ABC"};
alert(jsonString[123]);
您必须添加引号。
找到相关文档答案 2 :(得分:0)
您可以使用数字名称作为字符串,例如{"123":"ABC"}
是有效的JSON,而{123:"ABC"}
是有效的Javascript表达式