nto*_*end 27 javascript quotes json object-literal
我一直看到这一点:声明了对象文字,使得某些键被引号括起而其他键则没有.jQuery 1.4.2的一个例子:
jQuery.props = {
"for": "htmlFor",
"class": "className",
readonly: "readOnly",
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
colspan: "colSpan",
tabindex: "tabIndex",
usemap: "useMap",
frameborder: "frameBorder"
};
Run Code Online (Sandbox Code Playgroud)
用引号包装前两个属性键(for和)的重要性是什么,而其他属性键是否class少引用?有任何差异吗?
我一直在讨论ECMAScript 5规范 ; 我能找到的是[ 第15.12.3节的注释6,强调我的 ]:
注6:对象呈现为左开括号,后跟零或多个属性,用逗号分隔,用右大括号关闭.属性是一个带引号的String,表示键或属性名称,冒号,然后是stringified属性值.数组呈现为左括号开头,后跟零个或多个值,用逗号分隔,用右括号关闭.
但是,这仅指JSON 的字符串化.
Poi*_*nty 37
这些是Javascript保留字,并且(虽然不是非常必要)语言的语法要求引用它们.
严格来说,纯"JSON"表示法要求引用所有 "关键"字符串.然而,Javascript本身可以使用有效标识符(但不是保留字)的键是不加引号的.