当前位置: 首页 > 面试题库 >

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

金子轩
2023-03-14
问题内容

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

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


问题答案:

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

点表示法仅适用于属性名称即有效标识符名称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版本)。因此,我认为最好的解决方案是避免对属性名称使用保留的关键字,或者如果不能的话,避免使用括号表示法。

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



 类似资料:
  • 问题内容: 我试图理解和符号之间的区别。在下面的问题中,我使用正确的答案。当我使用它不起作用。有人可以解释为什么与众不同。 问题答案: 使用点表示法时,表示对象中的实际属性,该属性将不存在。因此,返回不等于的。 使用表示法时,您将使用变量中的名称访问对象中的属性。因此,这将起作用。 例如, 这将打印, 因为,没有成员命名(尝试获取名称为的成员),而在下一种情况下,有成员命名为(尝试获取具有in的值

  • 问题内容: 我来自Javascript背景(可以同时通过属性和符号访问属性),所以请原谅我,但是Python中两者之间的区别到底是什么? 从我的实验它seeems认为应始终使用,既得到的索引或并从在某个键中获得的价值。这是否正确?如果不正确,什么时候在Python中使用? 问题答案: 点运算符用于访问任何对象的属性。例如,复数 具有(其中包括)两个属性和: 除此以外,它还有一个方法,它也是一个属性

  • 问题内容: 它们都有效吗?是出于某些原因而首选? 问题答案: 方括号是列表,括号是元组。 列表是可变的,这意味着您可以更改其内容: 而元组不是: 另一个主要区别是,元组是可哈希的,这意味着您可以将其用作字典的键。例如: 请注意,正如许多人指出的那样,您可以将元组加在一起。例如: 但是, 这并不意味着元组是可变的 。在上面的示例中,通过将两个元组加在一起作为参数来构造 新的 元组。原始元组未修改。为

  • 问题内容: 我对以下代码行的语法感到困惑: 数据框对象由2列(“大脑”和“身体”)组成 当我打印x_values时,我得到这样的东西: 就dataframe对象的属性和方法而言,我知道pandas文档,但双括号语法使我感到困惑。 问题答案: 考虑一下: 来源DF: 选择一列-生成Pandas.Series: 选择DataFrame的子集-结果为DataFrame: 结论: 第二种方法允许我们从Da

  • 我正在阅读关于if的bash示例,但有些示例是用单方括号编写的: 其他带双方括号: 有什么区别?

  • 问题内容: 让我们有一个小的数据框: 当我搜索会员资格时,根据我要搜索in还是in的速度差异很大。 这是为什么? 问题答案: 委托给,显然您正在执行索引操作。 另一方面,to的代表必须做一些额外的繁重工作,主要是确定“ CID”是使用属性访问来调用的属性,函数还是列(方便,但不建议用于生产代码)。 现在,为什么不推荐呢?考虑, 将“ A”列称为,没有任何问题,因为它与熊猫中的任何属性或函数命名都不