我有类似的代码,我想知道是否有办法让它缩短

时间:2012-07-09 04:17:24

标签: javascript extjs

我想知道如何在我的js文件中缩短它们。我有这么多类似的代码。我已经重复了这个,如果函数一次又一次也必须重复其他函数。唯一改变的是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();
    };
};

2 个答案:

答案 0 :(得分: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函数重命名为更具描述性的内容:)

答案 1 :(得分:0)

你可以试着让它们都调用一个类似的函数并传递一个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;
    }
}

无论如何,这就是理论,给我一分钟,我会看看我是否可以整理一下。 (ternary

这是一个快速jsfiddle