将if else语句包装为函数

时间:2017-09-11 02:50:06

标签: javascript

假设我有以下if else语句代码。

if (checkValue(3)) {
    doFunction();
} else {
    alert('Fail');
}

function checkValue(value) {
    return value;
}

我想将其转换为以下以返回相同的结果。

checkValue(3, doFunction());

怎么做?

注意:我不想重复if else,因为这会在我的代码中多次使用。我也不想使用三元运算符

2 个答案:

答案 0 :(得分:4)

使用像这样的回调

function checkValue(value, cb) {
    if (value) {
        cb(value);
    } else {
        alert('Fail')
    }
}

checkValue(3, doFunction);

注意:不要通过doFunction(),要传递函数,而不是调用函数的结果

答案 1 :(得分:1)

尽量保持你的功能通用。正如所指出的那样,你的功能并没有做任何重要的事情。这是一个更好的代码的开始:

function eq_functor(a, b) {
    return function () {
        return (a == b);
    };
}

function if_call(pred_fn, true_cb, fail_cb) {
    return pred_fn() ? true_cb() : fail_cb();
}

function bind_args(fn, args, _this = this) {
    return fn.bind(_this, ...args);
}

var x = 3;

if_call(
    eq_functor(x, 3),
    bind_args(console.log, ['success']),
    bind_args(console.log, ['fail'])
);

旁注:如果我在生产中看到这个代码,我会向制作它的开发人员下台,仅仅因为它更加神秘而不是它有用。想象一下,如果开发人员试图巧妙地将其放入if,else if,else块......