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

时间:2017-03-21 08:38:45

标签: javascript string if-statement null conditional-statements

我在验证函数中有两个字符串变量,它们应该确保变量不会同时为null或为空(也就是当一个为空而其他等于空时,不允许)。

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

  1. 如果两者都为空
  2. 如果两者都是空的(如果它们的长度等于0)
  3. 如果string1为null且string2为空
  4. 如果string1为空且string2为null
  5. 它功能齐全,但很丑陋而不是最佳实践"。如何简化?

    if ((string1==null && string2==null) || (string1.length==0 && string2.length==0) || (string1==null && string2.length==0) || (string2==null && string1.length==0))
    

4 个答案:

答案 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)

您可以使用函数来提高可读性,例如:

&#13;
&#13;
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;
&#13;
&#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))