2012-09-18 57 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) {}