gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:46:47 26 4
gpt4 key购买 nike

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

为什么不 .运算符允许索引属性吗?

最佳答案

使用.访问成员称为点表示法。使用 [] 访问它们称为括号表示法

点符号仅适用于有效的属性名称 identifier names [spec] ,所以基本上任何名称也是有效的变量名称(有效的标识符,另请参阅 What characters are valid for JavaScript variable names? )和任何 reserved keyword [spec] .

括号表示法需要一个计算结果为字符串(或可以强制为字符串)的表达式,因此您可以使用任何字符序列作为属性名称。字符串可以包含的内容没有限制。

示例:

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[“我的属性(property)”]

使用点表示法:在所有其他情况下。

关于保留关键字,有一个警告。虽然规范允许将它们用作属性名称并使用点表示法,但并非所有浏览器或工具都尊重这一点(尤其是较旧的 IE 版本)。因此,我认为最好的解决方案是避免对属性名称使用保留关键字,或者如果不能的话使用括号表示法。

<小时/>

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

关于javascript - 使用括号 (`[]` ) 和点 (`.` ) 表示法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17189642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com