使用方括号(`[]`)和点(`.`)表示法之间的区别[重复]

使用[].访问数组或对象属性的真正区别是什么?使用哪一个?

另外,为什么.运算符不允许索引属性?

回答:

使用来访问成员.称为 点符号 。用它们访问它们[]称为 括号符号

点表示法仅适用于属性名称即有效标识符名称spec,因此基本上任何名称也将是有效 (有效 标识符和任何保留关键字。

[规格]](http://es5.github.io/#x7.6.1) 。

括号表示法需要一个表达式,该表达式的结果为字符串(或可以强制为字符串),因此您可以将 任何字符序列用作属性name 。字符串可以包含什么没有限制。

例子:

obj.foo;  // valid

obj.else // valid, reserved keywords are valid identifier names

obj.42 // invalid, identifier names cannot start with numbers

obj.3foo // invalid, ""

obj.foo-bar // invalid, `-` is not allowed in identifier names

obj[42] // valid, 42 will be coerced to "42"

obj["--"] // valid, any character sequence is allowed

obj[bar] // valid, will evaluate the variable `bar` and

// use its value as property name


  • 当属性名称包含在变量中时,例如obj[foo]
  • 属性名称包含标识符中不允许使用的字符,例如以数字†开头,或包含空格或破折号(-),例如obj["my property"]

在所有其他情况下。

尽管有关于保留关键字的

。尽管该规范允许将它们用作属性名称并带有点符号,但并非所有浏览器或工具都遵守此要求(特别是较旧的IE版本)。因此,我认为最好的解决方案是避免对属性名称使用保留的关键字,或者如果不能的话,避免使用括号表示法。


†:这也是为什么只能使用方括号表示法访问数组元素的原因。标识符不能以数字开头,因此不能仅由数字组成。

以上是 使用方括号(`[]`)和点(`.`)表示法之间的区别[重复] 的全部内容, 来源链接: utcz.com/qa/419214.html

回到顶部