是否可以访问使用三元条件运算符计算的值?

时间:2017-02-01 13:05:07

标签: javascript typescript

我想知道在使用三元条件运算符时是否可以访问正在考虑的值。

e.g:

const dict = new Map<Foo, Bar>();

const x = dict.get("foo") !== undefined ? dict.get("foo") : new Bar();

有没有办法摆脱这个三元表达式中重复的dict.get("foo")

1 个答案:

答案 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();