It could have been a simple for loop with a break whenever one evaluates false. Blazing fast in every javascript engine, and easy to see all the code in one place.
Instead, it’s a slow tower of bloat, which you need to read 5 files to reason about.
Javascript implementation:
function passAll() {
var fns = [].slice.call(arguments);
return function() {
for (var i = 0, len = fns.length; i < len; i++) {
if (!fns[i].apply(null, arguments)) { return false; }
}
return true;
};
}
Or Coffeescript (including the function check):
passAll = (fns...) ->
for fn in fns then if typeof fn isnt 'function'
throw new TypeError 'all funcs should be functions'
(args...) ->
(return false if not fn args...) for fn in fns
true
Instead, it’s a slow tower of bloat, which you need to read 5 files to reason about.
Javascript implementation:
Or Coffeescript (including the function check):