对象的[]和点在实际应用中的区别

const obj ={
    a: 1,
    b: 2
}

obj['a']obj.a 在实际应用中的区别,或者说应该注意的地方

除了 obj[a]a 可以作为变量,还有哪些

阅读 1.1k
2 个回答

两种都是属性访问的写法,从功能上来说没有区别。

但是 . 写法后面必须是一个合法的标识符,[] 写法可以是任何字符串、字符串表达式或结果可以转为字符串的表达式。比如有一个属性叫 "!@#$%^&",你就没法把它写在点后面,但是却可以写成 obj["!@#$%^&"]。另外,[] 写法中,属性名可以是表达式,当然可以是变量,这也是点号访问做不到的。

另外 @linong 提到了 ?. 的写法不同,对于点号,要空可选,直接 ?. 就行;但对于方括号的,是直接在方括号前加 ?.,如 obj?.["blabla"]

可以是变量不准确,改为可以是表达式[1,2,3,4][1+1]

?. 的写法稍微有一点不同

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