在参数后面加问号,例如 obj.val?.prop,这是什么意思?

6

我遇到了这样的代码条件语句:someObject.arrParam?.length。这是什么语法?那个问号叫什么?我知道一个用于函数参数的可选运算符。这是它的变体吗?以前从未遇到过。


或许 => 可选链 - Always Helping
1
重复内容:JavaScript中的可选链接。参见 JavaScript中这个符号是什么意思? 和MDN关于表达式和运算符以及语句的文档。 - Sebastian Simon
3个回答

4
这被称为JavaScript中的"可选链式调用"。它允许在不引发空异常的情况下钻取对象。
例如:尝试运行下面的代码片段,然后取消注释并运行该行代码,以理解一个工作示例。

let employeeA ={ name: "Dane", address : { city:"London"}}
let employeeB ={ name: "John"}

console.log(employeeA.address.city)
// console.log(employeeB.address.city) <----  this will raise an error
console.log(employeeB.address?.city) // <--- this wont

这是最新ESNext迭代中引入的新功能。

NodeJS支持: https://node.green/#ES2020-features-optional-chaining-operator-----

当前浏览器支持情况: https://caniuse.com/#feat=mdn-javascript_operators_optional_chaining

更多细节请参考此处: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining


2
这被称为可选链(或条件链接),如果arrParamundefinednull,则会将整个表达式评估为undefined

-3

这被称为 "条件(三元)运算符".

result=condition?ifTrue:ifFalse

x=(y>10)?100:1 中,如果 y>10,则 x 被设置为 100,否则 x 被设置为 1。

相当于:

if(y>10) x=100;
else     x=  1;

3
不,那不是这样的。 - Sebastian Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接