我在验证函数中有两个字符串变量,它们应该确保变量不会同时为null或为空(也就是当一个为空而其他等于空时,不允许)。
当前的IF声明非常复杂,因为我必须检查:
它功能齐全,但很丑陋而不是最佳实践"。如何简化?
if ((string1==null && string2==null) || (string1.length==0 && string2.length==0) || (string1==null && string2.length==0) || (string2==null && string1.length==0))
答案 0 :(得分:1)
您可以先检查一个变量,如果null
或空,而不是另一个,并将结果与AND一起加入。
if ((string1 === null || string1 === '') && (string2 === null || string2 === '')) {
// both null or empty
}
如果您只有其他真值,可以使用
if (!string1 && !string2) {
// both falsy
}
答案 1 :(得分:1)
我认为最好的解决方案是按顺序检查这些条件。首先检查null
,然后检查字符串是否不是empty
,并且最好的方法是将字符串与空字符串进行比较,如果使用{{1},将避免获取异常} .length
。
因此请使用undefined
而不是撰写if(string1 === '')
。
<强>解决方案:强>
然后您可以简单地使用以下条件:
if(string1.length==0)
<强>解释强>
如果两个字符串中的一个为if (!string1 || !string2 || string1 === '' || string2 === ''){
//Your code here
}
或true
,则为null
,换句话说,如果四个条件中的任何一个为empty
,则它将输入if块。
答案 2 :(得分:0)
您可以使用函数来提高可读性,例如:
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');
}
&#13;
我希望它可以帮助你,再见。
答案 3 :(得分:0)
也许写一个辅助函数:
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))