2012-09-18 60 views
4

我想简化下面的代码。这些代码似乎对我来说是多余的。这里有人能帮助我吗?非常感谢!如何简化我的条件语句?

if(area.regionCode=='0' || area.regionCode==null){ 

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

空字符串''''怎么样?它是“真”还是“假”? – zerkms

+0

如果代码的想法是在'area.region'值的末尾更新一个计数器,请注意当它们超过10个时,使当前数字有两位数(您的代码只会更新最后一个数字)。 – nnnnnn

+0

我想如果这两个明确的情况是你正在测试的,那么这个条件逻辑就OK了。如果你真的担心语法,你可以编写一个函数,例如叫做“isNullOrZero()”。 – Sepster

回答

2

每当你觉得有些代码没有直接透露,试着给它一个合适的名字一个新的家庭:

if (!isValidRegionCode(area.regionCode)) { 
    ... 
} 

... 

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

它有更多的代码整体,但让你的意图明确。

+1

+1 from me。还意味着什么是有效的区域代码(在您的示例中)的“定义”可以在代码中的单个点处重新使用和维护。 – Sepster

0

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

if (area.regionCode) { } 

逻辑样式,一个是将varAny作为布尔值处理。因此,JavaScript将执行隐式转换为任何对象类型varAny的布尔值。

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

都将努力同

返回false为下,

  • 不确定
  • “”
  • 错误。

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

你也可以先调整输出使" "问题将得到解决 这里的教程在@mttrb How do I trim a string in javascript?

和@nnnnnn描述的情况下,你可以先转换字符串或者通过parseInt()parseFloat()检查这个整数或浮点数Converting strings to numbers

+0

应该不用说,你应该知道,这也会触发'area.regionCode == false',这不是严格的原始情况,但这可能会不是一个问题(或者确实可能是需要的)。 – Sepster

+2

这不起作用。数字'0'是虚假的,但字符串'0'是truthy。 – nnnnnn

+3

字符串“0”是真的不是假的。 – mttrb

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