【问题标题】:Edit : if statement when checking for false (if(variable){} equivalent for false)编辑:检查假时的 if 语句(如果(变量){} 等效于假)
【发布时间】:2021-01-03 14:31:44
【问题描述】:

上下文:我正在尝试减少我正在使用 expo 进行的 reactjs 项目的代码。在我的一个 if else 语句中,一个布尔变量的值根据多个其他布尔变量中的任何一个是否为假而改变。我想让它更加优化并删除不必要的代码,因为它是针对移动应用程序的。

我的问题是:有没有办法在检查变量是否为假时缩短 if 语句?

if(variable){}

与

相同
if(variable === true){}

是否也有这样的方法来处理 false ?也许像

if(!variable){}

我不太确定,也找不到任何类似于我在网上任何地方展示的方法(目前)。

我现在的代码示例:

var example = false

if(var1 === false || var2 === false || var3 === false || var4 == false){
example = true
}

如果任何变量为假(因此是||),它应该切换

提前致谢!

【问题讨论】:

  • if (!var) 相当于var == false
  • 第一个假设不正确。第一个条件检查一个真实的值,据我所知,它与与真实的严格比较不同。
  • “我正在尝试优化”(在执行速度的背景下),“我正在尝试通过缩短一些 if 语句看起来更好” - 过早的优化警报响起。请决定您是想让代码更具可读性(这是一个好的意图),还是想让它运行得更快(这个问题可以忽略不计)。
  • Var 示例 = (var1 === false || var2 === false ....) ?

标签: javascript reactjs if-statement expo


【解决方案1】:

只要 varN 已经是布尔值,这应该完全相同:

var example = false
if(var1 && var2 && var3 && var4){
    example = true
}

但必须说,过早的优化很少会带来改进。大多数情况下,解释器已经处理了类似的优化。而通过改变简单的比较来获得的速度提升几乎没有。

所以我宁愿把它保持在最易读的状态而不是最优化的状态。

【讨论】:

  • 我在问题中没有提到的一件事是我的主电脑坏了。我正在使用另一台机器,由于 windows 在我的电脑上运行,但我无法在 windows 中获取节点文件,我必须使用虚拟机来运行 ubuntu 并从那里执行。它变得非常滞后,因此我试图尽可能减轻负载。我已经创建了 5 个布尔值,所以我不必为我的所有参数复制粘贴 10-15 个 if 语句。不过,我理解您的观点,这对您有很大帮助。谢谢!
【解决方案2】:

这是一个较短的版本:

var example = false

if (!(var1 && var2 && var3 && var4)) {
    example = true
}

我不会将此称为“优化”,我认为您的代码一开始没有任何问题。

【讨论】:

  • 我知道我的这部分代码没有错,只是我必须多次重复这个过程,因为我在我的代码中使用了外部文件和条形码扫描仪,我将不得不重复当我在 textInputs 中输入 2 个参数时,多次执行此过程以获得无错误的结果。基本上,为了让我的概念发挥作用,我必须在其他地方多次粘贴它,它变得超级滞后。
【解决方案3】:

编辑: 你可以使用 some()

if([var1,var2,var3,var4].some((item)=> item === false) ){
   example = true
 }

【讨论】:

  • 但是如果其中任何一个是假的,这会起作用吗?就像不是所有 4 个变量,只是 4 个中的任何一个。我的代码在此处需要示例变量,因此我不需要使用“或”。这里似乎只有当它们中的每一个都为假时,示例才会成为真的。不确定我是否正确理解了这个概念,但会阅读它。谢谢!
  • 对不起,我的错误。它必须是 .some()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2020-11-04
  • 1970-01-01
  • 2015-08-20
  • 2010-10-02
  • 2014-05-23
  • 2018-07-31
相关资源
最近更新 更多