0

在三元或 if 语句中,我经常希望该值等于正在测试的值,例如

//b is a integer or '-'
//a should be an integer

const a = b === '-' ? -1 : b

我用于 a 的语句是

const a = expr.match(/.*?\((.*)[a-z].*/)[1]

所以很高兴知道是否有单行方式让它工作,所以我不会重复一个可能会改变的复杂表达式。

4

2 回答 2

1

只需先分配变量。

let b = b = expr.match(/.*?\((.*)[a-z].*/)[1];
const a = b == '-' ? -1 : b;

如果你真的想要一个单行,你可以b在表达式中赋值。

const a = (b = expr.match(/.*?\((.*)[a-z].*/)[1]) == '-' ? -1 : b;

但是你应该b早点声明。您每次都可以重用相同的临时变量,因此您只需声明一次并在所有单行中使用它。

如果您在多个地方需要此模式,请定义一个函数。

function if_dash(expr) {
    return expr == '-' ? -1 : expr;
}

const a = if_dash(expr.match(/.*?\((.*)[a-z].*/)[1]);
于 2022-01-27T05:43:12.387 回答
0

如果您只想获得一次价值,请使用下面提到的脚本。 var a = (b = expr.match(/.*?\((.*)[a-z].*/)[1]) == '-' ? -1 : b;

于 2022-01-27T05:54:54.813 回答