skrudjmakdak
function forEach(myArray) {
    myArray.forEach(...);
}
forEach.apply(forEach, [
    [1, 2, 3]
]);
forEach.call(forEach, 
    [1, 2, 3]
);
Немного помедитировав над кодом становится ясно, что apply не удобно использовать при передачи параметра-массива и забыв про это можно ловить забавные баги.
call - это просто сахар для apply.
function myFn() {
    fn.apply(fn, arguments);
}
вместо
function myFn(arg1, arg2, arg3 и т.д.) {
    fn(arg1, arg2, arg3 и т.д.);
}