您可以采用函数式方法,并创建一个简单的比较函数生成器:
function eq(val) {
return function(x) {
return x === val
}
}
然后.every用于&&:
if ([a,b,c].every(eq(1))) {
// all were equal
}
或.some用于||:
if ([a,b,c].some(eq(1))) {
// at least one was equal
}
您还可以创建一个接收条件结果的函数和一个在条件为真时调用的函数:
function when(cond, fn) {
if (cond)
fn.call.apply(fn, [].slice.call(arguments, 2))
}
并将你的if身体封装成一个函数......
function doIt(arg1, arg2) {
console.log("doing it!")
console.log(this, arg1, arg2)
}
然后像这样使用它:
when([a,b,c].every(eq(1)), doIt, null, "foo", "bar")
第三个参数when设置this回调的值,随后的参数作为参数传递给回调。