2

jsファイルでどうすれば短くできるのか疑問に思っています。私はこれに似たコードをたくさん持っています。私はこれをif関数を何度も繰り返し、else関数も繰り返す必要があります。変更されるのはMission()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();
    };
};
4

2 に答える 2

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関数の名前をよりわかりやすい名前に変更する必要があります:)

于 2012-07-09T04:32:20.870 に答える
0

それらすべてに1つの同様の関数を呼び出してuida、次のようなパラメーターを渡すようにすることができます。

// 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;
    }
}

それはとにかく理論です、ちょっと待ってください、そして私はそれを少し片付けることができるかどうか見るでしょう。(三項

これが簡単なjsfiddleです。

于 2012-07-09T04:22:56.323 に答える