簡體   English   中英

如何優化方法返回布爾值的if語句

[英]How to optimize if-statements from method returning boolean

我對javascript有些新意,我只是想知道這是否可行。

考慮一下:

if(foo('1')){
    // do something
}
else if(foo('2')){
    // do something else
}
else if(foo('3')){
    // do something different
}
else if(foo('4')){
    // do something completely different
}
...
else if(foo(n)){
    ...
}

foo(stringValue)是一個返回truefalse的方法,但catch是我無法以任何方式改變該方法(例如,更改返回值)。 現在,如果我想重構代碼,我可以將所有foo參數值放在集合中,為if語句中的每個唯一操作創建一個方法,迭代所有參數值,並在foo(n)時調用適當的方法)返回true,但這似乎是一種非常丑陋的方式。 是否有更好的方法可以使用switch語句實現這一目標?

如果你想使用switch語句(不確定它是否真的更好),你可以使用這個技巧:

switch( true ) {
    case foo('1'):
        // do something
        break;
    case foo('2'):
        // and so on
        break;
    default:
        // all returned false
}

我更喜歡這個。 只是將檢查代碼與處理代碼分開。

var array = ["1", "2", "3", "4"];
var iLength = array.length;
for(var i= 0; i < iLength ;i++)
{
    var strValue = array[i];
    if(foo(strValue))
    {
        break;
    }
}

switch(strValue)
{
    case array[0]:
    //perform operations here for case "1"
    break;
    case array[1]:
    //perform operations here for case "2"
    break;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM