JavaScript 操作符 Optional chaining (?.)

今天查一个问题的时候, 去reivew 别人最近提交的代码, 发现有下面这个改动, 感觉很奇怪, 怎么去掉了为空的短路判断并且中间加了一个问号? 很是疑惑. 难道提交之前碰到键盘了?
diff.png
再想想, 如果说这样, 本地测试应该就不会过吧, 于是开始怀疑自己. 果不其然, JavaScript 真的有这种操作符.

JavaScript的这个操作符叫 Optional Chaining. 我第一次见到它, 也不知道中文世界里怎么翻译. 不过这个确实简化了之前的操作. 类似三元操作符(?:), 如果是空就返回 undefined.

从下面的第一种形式变成了第二种:

const nestedProp = obj.first && obj.first.second;
const nestedProp = obj.first?.second;

不仅如此, 它还能作用到函数上面. 即不确定函数是不是存在的时候. 不确定myOpt 函数是不是存在.

myObj.myOpt?.();

用在array 上面:

myArr?.[32];

标签: none

添加新评论