带引号的对象键和不带引号的区别是什么?
有什么区别吗?
obj = {'foo':'bar'}
和
obj = {foo: 'bar'}
我注意到你不能使用-
在你不使用引号的时候。 但它确实有所作为? 如果是,那是什么?
不,引号没有什么区别(除非,正如你所说的,你想使用一个不是有效的JavaScript标识符的密钥)。
作为一个方面说明, JSON数据交换格式 确实需要双引号标识符。
从JavaScript中未引用的属性名称/对象键 ,我写了关于这个主题:
如果属性名称是数字文字或有效的标识符名称,则只能省略引号。
[…]
括号符号可以安全地用于所有的属性名称。
[…]
点符号只能在属性名称是有效的标识符名称时使用。
请注意,保留字可以在ES5中用作未加引号的属性名称。 但是,为了向后兼容ES3,我build议无论如何引用它们。
我也做了一个工具,告诉你是否可以使用任何给定的属性名称而不用引号和/或点符号。 在mothereff.in/js-properties上试试。
这里没有区别。 只是一个风格的问题。 这样做的原因之一是能够使用“超级”或“类”作为关键字,因为这些是保留关键字。
有些人可能会试图传递一个string与空白,然后调用o ['我可以有空白']但是我会把这种不好的做法。
不,不是JavaScript。 但是,一些JSONparsing器将不会出现键引号周围时失败。
有些情况下他们是不同的。 例如,如果您正在使用jQuery,并且在调用jQuery $()命令创build元素时要创build要传递的参数列表,则会将引用的单词转换为参数,将非引号单词转换为函数。 例如,“size”将设置对象的size属性,而size(不带引号)将调用对象的size()函数。 看到附近的jQuery() :
虽然第二个参数很方便,但它的灵活性会导致意想不到的结果(例如调用.size()方法的$(“
<input>
”,{size:“4”}),而不是设置size属性。 之前的代码块可以写为:
区别:
- 没有引用:没有引用时是对象。
访问对象的成员:object.member
- 有报价 : 有报价的时候是地图。
访问地图的成员:object [member]