javascript - javascript 是否有可选的索引运算符?

标签 javascript

有时我有:

let a = { b: { c1: { z: false } } }

其他时候我有:

let a = { b: { c2: { z: false } } }

我有 let n = 'c1'let n = 'c2'

我可以这样做来传播未定义的:

a?.b[n]?.z

但是除了 if(a.b) ... 之外,如果 b 未定义,我可以做任何速记吗?

似乎没有 ?[,我也不认为我可以做 a['b'][n]?.z,因为如果没有 b 那么尝试在其上索引 n 将导致无法读取未定义的属性 VALUE_OF_N

最佳答案

是的:

a?.b?.[n]?.z

?. 运算符可以用在 [ ] 表达式之前。它看起来很奇怪,但是 ?. 本身就是一个完整的标记,所以它在语法上是有意义的。换句话说,?. 通常不仅仅是通常的 . 运算符之前的问号;它本身就是一个完整的运算符。

let a;
let n;

a = { b: { c1: { z: false } } }
n = 'c1';

console.log(a?.b[n]?.z);

a = { b: { c2: { z: false } } }
n = 'c2';

console.log(a?.b?.[n]?.z);

关于javascript - javascript 是否有可选的索引运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64231352/

相关文章:

javascript - 如何使用 jQuery 的覆盖对话框作为反馈表单

Javascript:XHR 不处理多个异步请求

javascript - 使用 Javascript 将输入设置为只读

javascript - 底部的 Flexslider 导航按钮未显示

javascript - 如何删除传单图层并重新绘制?

javascript - 如何暂时禁用javascript中的log4js登录?

javascript - 如何在 D3 v4 力图中仅让一些边对 `mouseover` 使用react

javascript - 根据使用 Intersection Observer 滚动到 View 中的元素的数据属性更改导航栏的主题

javascript jquery url 部分 trim

javascript - 如何解决 express、typescript 代码中的这些更漂亮的错误