多年来,这个问题有多种答案,从一些笨拙的代码演变而来。
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")