js对象索引用.还是用[]

例如:tempObj[arrs[i]]
这个为什么一定要用[] 而不能用tempObj.arrs[i]呢??

阅读 4.9k
3 个回答

JavaScript为属性访问定义了两种语法:

expression.identifier  // 表达式指定对象,标识符指定需要访问的属性的名称
expression[expression] // 这种方法适用于对象和数组,[]内的表达式指定要访问的属性的名称或者代表要访问数组元素的索引

.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字。
当属性名是通过运算得出的值而不是固定的值的时候,必须使用方括号写法。
(摘自《JavaScript权威指南》4.4节-属性访问表达式)

一种是上面所说名称不是合法标识符
另一种是属性名是运行期决定的,你的题目里就是这种情况

两个都可以,除非属性名是不是规范的变量名称,这样就需要使用[]

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题