2013-10-28 67 views
1

我該如何着手將ifelse重寫爲switch重寫ifelse開關

var d = document, 
    a = 'foo', 
    b = 'bar', 
    c = 'foobar'; 

if (d.URL.indexOf(a) != -1 || d.URL.indexOf(b) != -1) 
{ 

    // do this 

} 
elseif(d.URL.indexOf(c) != -1) 
{ 

    // do something else 

} 

如此下去這個約10多ifelse這就是爲什麼我寧願將其更改爲switch

我尋找答案,並沒有發現任何這樣的嘗試:

function io(i) 
{ 
    d.URL.indexOf(i) != -1; 
} 

switch (io()) 
{ 
case a: 
case b: 
    // do this 
    break; 
case c: 
    // do this 
    break; 
} 

和同樣的東西的一些變化,但我非常是一個JS新手,所以知道我可能是錯的(我是)。

+0

a)您是否嘗試過[Google](http://www.google.com/search?q=javascript+switch+statement)以瞭解switch語句的語法? b)格式化您的代碼示例! – Nils

+0

當然,(額外:)可能不好。 –

+1

對不起所有的忍者編輯,但我的答案應該是你現在需要的。 – Evan

回答

1

我認爲這裏要做的最好的事情是實際創建一個包含它們函數的對象數組,然後您只需使用every循環訪問該數組。下面是使用上面的例子中的一些演示代碼:

var choices = [ 
    { 
    value: foo, 
    fn: function() { // do this } 
    }, 
    { 
    value: 'foobar', 
    fn: function() { // do something else } 
    } 
]; 
choices.every(function(choice) { 
    if (document.URL.indexOf(choice.value) !== -1) { 
    choice.fn(); 
    return false; 
    } else return true; 
}); 

如果你有,你知道會被多次使用的功能,你只要創建它們的陣列外,並將其分配給多個對象的fn關鍵。當你沒有遇到它時,通過使用return true,它將繼續在陣列中移動,然後當它碰到一個真的時,它會return false並結束每個函數。