我想知道在使用三元条件运算符时是否可以访问正在考虑的值。
e.g:
const dict = new Map<Foo, Bar>();
const x = dict.get("foo") !== undefined ? dict.get("foo") : new Bar();
有没有办法摆脱这个三元表达式中重复的dict.get("foo")
?
答案 0 :(得分:2)
不,?:
运算符正在评估表达式。你给它表达式dict.get("foo") !== undefined
,这是一个布尔表达式。 ?:
运算符无法仅隔离该表达式中的dict.get("foo")
以便稍后引用。
如果你需要特定的!== undefined
测试,那么不,没有别的办法。为避免重复的方法调用,您只能将其重构为:
let x = dict.get("foo");
if (x === undefined) {
x = new Bar();
}
但是,如果 truthy 比较而不是专门针对undefined
的测试,这是常见的习惯用法:
const x = dict.get("foo") || new Bar();