2012-07-09 29 views
2

我想知道我怎麼可以讓他們在很短我的js文件。我有這麼多類似的代碼。我已如果功能再次重複這一點,也再次必須重複其他功能well.The唯一的改變是團()Doclick()和Yesdo()。如果有辦法讓它簡短,讓我知道謝謝。我有類似的代碼這一點,我想知道是否有辦法讓它短

function Buy() { 
    if (uida == '234' || uidb == '4563') { 
     Mission(); 
    } else { 
     stop(); 
    }; 
}; 

function Start() { 
    if (uida == '234' || uidb == '4563') { 
     Doclick(); 
    } else { 
     stop(); 
    }; 
}; 

function ReBuy() { 
    if (uida == '234' || uidb == '4563') { 
     Yesdo(); 
    } else { 
     stop(); 
    }; 
}; 

回答

2

使用函數指針!

function Uida(fn) { 
    if (uida == '234' || uidb == '4563') { 
     fn(); 
    } else { 
     stop(); 
    }; 
} 

function Buy() { 
    Uida(Mission); 
}; 

function Start() { 
    Uida(Doclick); 
}; 

function ReBuy() { 
    Uida(Yesdo); 
} 

當然,你要的Uida功能重命名爲更具描述性的:)

+0

謝謝kshitij我明白了:) – 2012-07-09 04:34:13

0

你可以看看,使他們所有的呼叫一個類似的功能,並通過一個uida paremeter,這樣的事情:

// You could change the following 3 functions to have ternary statements 
// eg: if (uidaCheck()) ? Function() : stop(); 
// 
function Buy() { 
    if (uidaCheck()) { 
     Mission(); 
    } else { 
     stop(); 
    } 
} 

function Start() { 
    if (uidaCheck()) { 
     Doclick(); 
    } else { 
     stop(); 
    } 
} 

function ReBuy() { 
    if (uidaCheck()) { 
     Yesdo(); 
    } else { 
     stop(); 
    } 
} 

function uidaCheck() { 
    // uida assumed to be globally accessible var 
    // 
    if ((uida == '234') || (uida == '4563')) { 
     return true; 
    } else { 
     return false; 
    } 
} 

這無論如何是理論,給我點時間,我會看看我可以整理一下。 (ternary

這裏有一個快速jsfiddle

+0

非常感謝我有一個想法,現在解決它:) – 2012-07-09 04:27:41

+0

感謝哥哥是我嘗試都soultion和我會看到哪個對我更好,非常感謝 – 2012-07-09 05:08:23

相關問題