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

您可以让它们都调用一个类似的函数并传递一个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 回答