javascript在使用多个if条件时获取失败原因



多年来,这个问题有多种答案,从一些笨拙的代码演变而来。

2022年,是否有一种单一或改进的方法来获得在多个if场景中失败的情况?

例如,myVarTwo在中失败

if (( myVarOne == "alpha") && ( myVarTwo == "beta") &&  ( myVarThree == "cappa"){
// do stuff
}else{
console.log("failed at ...)
}

示例二,myVarThree失败

if (( myVarOne == "alpha") && (( myVarTwo == "beta") ||  ( myVarThree == "cappa")){
// do stuff
}else{
console.log("failed at ...)
}

我假设条件测试在第一次失败时停止。

首先,条件测试在第一次失败时停止的假设是正确的。逻辑&&运算符是短路运算符。它将在第一次出现错误评估时返回。相反,||运算器在真值求值的第一个实例处返回。

话虽如此,我唯一的猜测是使用三元运算符,但我不确定你是否会认为它是一个线性算子。特别是如果你有更多的条件要检查,三元运算符会变得非常长,可读性不强。三元运算符可以被视为模拟顺序测试的多个if...else条件,每个检查都有一个操作。

const myVarOne = "alpha",
myVarTwo = "notBeta",
myVarThree = "cappa"
const printFailure = (string) => {
console.log(`Failed at ${string}`)
}
const printSuccess = () => {
console.log('All conditions satisfied!')
}
// Method 1
myVarOne != "alpha" ? printFailure("myVarOne") : myVarTwo != "beta" ? printFailure("myVarTwo") : myVarThree != "cappa" ? printFailure("myVarThree") : printSuccess()
// Method 2
myVarOne == "alpha" ? myVarTwo == "beta" ? myVarThree == "cappa" ? printSuccess() : printFailure("myVarThree") : printFailure("myVarTwo") : printFailure("myVarOne")

最新更新