如何简化我的条件语句?

4
我想简化以下代码。对我来说,这些代码似乎有些冗余。这里有人能帮我吗?非常感谢!
if(area.regionCode=='0' || area.regionCode==null){  

    var fakecode=area.region.substring(0, area.region.length - 1);
        area.region= fakecode +i;
}

空字符串 ''true 还是 false - zerkms
如果代码的想法是在area.region值的末尾更新计数器,请注意当您拥有超过十个时,当前数字具有两位数(您的代码只会更新最后一位数字)。 - nnnnnn
如果你正在测试那两种明确的情况,我认为这个条件逻辑是可以的。如果你真的担心语法问题,你可以编写一个名为isNullOrZero()的函数。 - Sepster
现在看我的回答,如果我有任何滞后,请告诉我。 - user1280616
3个回答

2
无论何时,如果您认为某些代码不是直接表达的,请尝试使用适当的名称将其放在新的位置:
if (!isValidRegionCode(area.regionCode)) {  
  ...
}

...

function isValidRegionCode(regionCode) {
  return area.regionCode != null && area.regionCode != '0';
}

它的代码总量更多,但可以清晰地表达您的意图。


1
我给你点赞。同时,这也意味着“有效区域代码”的定义(在你的示例中)可以在代码的单个点上重复使用和维护。 - Sepster

0

我建议使用明确的条件检查。当使用:

if (area.regionCode)  {   }

逻辑风格,一种是将varAny视为布尔值。因此,JavaScript将对varAny进行隐式转换为varAny所属的任何对象类型的布尔值。

或者

 if(Boolean(area.regionCode)){
        codes here;
    }

两者都可以正常工作

对于以下内容返回false:

  • null
  • undefined
  • 0
  • ""
  • false。

请注意,对于字符串零“0”和空格“ ”,返回true。

您还可以首先修剪输出,以解决" "问题。在这里,教程如何在javascript中修剪字符串?

在@mttrb和@nnnnnn描述的情况下,您可以首先通过parseInt()parseFloat()将字符串转换为int或float,检查此将字符串转换为数字


不用说,您应该意识到当 area.regionCode==false 时也会触发此操作,这并不严格符合您的原始情况,但这可能并不是一个问题(或者确实是可取的)。 - Sepster
2
这样行不通。数字0是假的,但字符串'0'是真的。 - nnnnnn
3
字符串 '0' 是真而不是假。 - mttrb
所有的观点都很好...请等一下,我会通过更新我的答案来澄清。 - user1280616

0
if(parseInt(area.regionCode) > 0) {}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接