在三元或 if 语句中,我经常希望该值等于正在测试的值,例如
//b is a integer or '-'
//a should be an integer
const a = b === '-' ? -1 : b
我用于 a 的语句是
const a = expr.match(/.*?\((.*)[a-z].*/)[1]
所以很高兴知道是否有单行方式让它工作,所以我不会重复一个可能会改变的复杂表达式。
在三元或 if 语句中,我经常希望该值等于正在测试的值,例如
//b is a integer or '-'
//a should be an integer
const a = b === '-' ? -1 : b
我用于 a 的语句是
const a = expr.match(/.*?\((.*)[a-z].*/)[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]);
如果您只想获得一次价值,请使用下面提到的脚本。
var a = (b = expr.match(/.*?\((.*)[a-z].*/)[1]) == '-' ? -1 : b;