我在验证函数中有两个字符串变量,它们应该确保变量不会同时为空或为空(当一个为空而另一个等于空时
,也是不允许的(。当前的IF语句非常复杂,因为我必须检查:
- 如果两者都为空 如果
- 两者都为空(如果它们的长度等于 0(
- 如果字符串 1 为空,字符串 2 为空
- 如果字符串 1 为空,字符串 2 为空
它是功能性的,但很丑陋,不是"最佳实践"。如何简化?
if ((string1==null && string2==null) || (string1.length==0 && string2.length==0) || (string1==null && string2.length==0) || (string2==null && string1.length==0))
我认为最好的解决方案是按顺序检查这些条件。首先检查null
然后检查字符串是否未empty
,最好的方法是将字符串与空字符串进行比较,这将避免在undefined
上使用.length
时出现异常。
所以使用if(string1 === '')
而不是写if(string1.length==0)
。
溶液:
然后,您可以简单地使用以下条件:
if (!string1 || !string2 || string1 === '' || string2 === ''){
//Your code here
}
解释:
如果两个字符串中的一个是null
或empty
,换句话说,如果四个条件中的任何一个true
它将进入if块。true
为null
或为空,您可以先检查一个变量,然后检查另一个变量,并将两个结果与 AND 连接起来。
if ((string1 === null || string1 === '') && (string2 === null || string2 === '')) {
// both null or empty
}
如果只有其他真实值,则可以使用
if (!string1 && !string2) {
// both falsy
}
您可以使用函数来提高可读性,例如:
function isEmpty(param){
if(param==null || param.lenght==0)
return true;
else
return false;
}
var string1, string2;
//And you if becomes:
if(isEmpty(string1) || isEmpty(string2)){
//[...]
console.log('String1 & String2 are empty');
}
我希望它对你有帮助,再见。
也许写一个辅助函数:
function stringIsNotValid(val) {
return val == null || val.length == 0;
}
if(stringIsNotValid(val1) && stringIsNotValid(val2)) { ... }
但一个简化的如果可能是
if((string1 == null || string1.length == 0) && (string2 == null || string2.length == 0))