使用此语法创建的对象之间有什么区别:{ prop1: val1, prop2: val2 }
和使用以下语法创建的对象:{ 'prop1': val1, 'prop2': val2 }
?
而且,以下代码是否有效?
var val1 = 10, val2 = 15;
var tmp1 = { prop1: val1 };
var tmp2 = { 'prop2': val2 };
alert(tmp1['prop1']); // I expect 10
alert(tmp2['prop2']); // I expect 15
P.S。:抱歉,我无法为我的问题提出更好的标题。这反映了我对JavaScript的不了解。
答案 0 :(得分:4)
您的示例没有区别。如果您的任何属性名称包含空格或特殊字符,或者not a valid identifier,则 需要引号:
{ prop1 with spaces: val1, 6prop2$-^: val2 } // illegal
{ 'prop1 with spaces': val1, '6prop2$-^': val2 } // correct
答案 1 :(得分:3)
完全没有区别,尽管字符串版本允许您使用不是有效字符的字符作为标识符。
您可以使用字符串执行此操作:
{ 'prop-1': val1, 'prop-2': val2 }
但不是标识符:
{ prop-1: val1, prop-2: val2 }
是的,该代码有效。