简化 IF 语句中多个变量的"null or empty"检查



我在验证函数中有两个字符串变量,它们应该确保变量不会同时为空或为空(当一个为空而另一个等于空时

,也是不允许的(。

当前的IF语句非常复杂,因为我必须检查:

  1. 如果两者都为空
  2. 如果
  3. 两者都为空(如果它们的长度等于 0(
  4. 如果字符串 1 为空,字符串 2 为空
  5. 如果字符串 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
}

解释:

如果两个字符串中的一个是nullempty,换句话说,如果四个条件中的任何一个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))

相关内容

最新更新