假设我有以下if else语句代码。
if (checkValue(3)) {
doFunction();
} else {
alert('Fail');
}
function checkValue(value) {
return value;
}
我想将其转换为以下以返回相同的结果。
checkValue(3, doFunction());
怎么做?
注意:我不想重复if else
,因为这会在我的代码中多次使用。我也不想使用三元运算符
答案 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块......