当前位置: 首页 > 知识库问答 >
问题:

简化IF语句中多个变量的“空或空”检查

湛同
2023-03-14

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

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

  1. 如果两者都为空

它是功能性的,但丑陋,不是“最佳实践”。如何简化?

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

共有3个答案

谈琛
2023-03-14

你可以使用一个函数来提高可读性,比如:

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');
}
金阳曜
2023-03-14

如果null或为空,您可以先检查一个变量,然后将两个结果与AND连接起来。

if ((string1 === null || string1 === '') && (string2 === null || string2 === '')) {
    // both null or empty
}

如果您只有其他真实值,则可以使用

if (!string1 && !string2) {
    // both falsy
}
杜炫明
2023-03-14

我认为最好的解决办法是按顺序检查这些条件。首先检查null,然后检查字符串是否为空,要做到这一点,最好的方法是将字符串与空字符串进行比较,这样可以避免在上使用。长度>未定义

因此,使用if(string1=='')而不是编写if(string1.length==0)

解决方案:

然后,您可以简单地使用以下条件:

if (!string1 || !string2 || string1 === '' || string2 === ''){
     //Your code here
}

说明:

如果两个字符串中的一个为nullempty,则为true,换句话说,如果四个条件中的任何一个为true,则将进入if块。

 类似资料:
  • null 它是功能性的,但丑陋,不是“最佳实践”。怎么简化呢?

  • 好吧,我正在使用字典,例如: 然后我想做的基本上是说,如果“用户”(一个参数)的名称前面有“@”,那么将变量前缀分配为“@”,如果他们的名称前面有“~”,则将变量前缀分配为“~”,如果他们有“ 然后我想说,如果用户的名字前面有“%”,则将前缀变量设置为“%”,否则将其设置为“”(因为这些值只有两个键)。为此,我需要一个if语句,并将其与self进行比较。声音的价值。 分配前缀变量的当前代码 目前,

  • 有可能做如下事情吗: 或者: 我知道用很多if-else语句也可以实现同样的目标,但如果它像上面那样工作,看起来会更干净。

  • 问题内容: 我想知道上面的代码是否可用于检查变量是否为null或为空。 问题答案: 是的,该代码正是这样做的。 您还可以使用: 编辑: 使用添加的值信息,您需要: 一个值不能包含值。

  • 问题内容: 说我有一大堆的是无论是变量或。我想在一个if语句中评估一组这些变量,以查看它们是否都像这样: 除非那行不通。我知道我可以这样做: 但这是非常丑陋的-特别是如果这些if语句将在我的代码中频繁出现。有什么方法可以使用更简洁的语法进行此评估(例如第一个示例)? 问题答案: 您永远不要使用(或)测试布尔变量。相反,要么写: 或使用(以及相关问题的表弟): 或使用Python的可传递比较:

  • 我所说的“空if语句”是指这样的东西(注意分号): 我在考虑这个应用程序时遇到了麻烦。使用time循环,您可以这样做: 但对于if语句没有这样的应用。此外,Java编译器在遇到此类语句时不会发出错误或警告。这可能会导致大而无声的问题,尤其是对于冗长而复杂的语句: 我的问题是:为什么Java中允许这样做?更重要的是,我是否可以启用一个选项,以便在发生这种情况时引发警告? (之前有人问过关于C#的这个