Поясните, пожалуйста, эту 11 строку в примере Правильно ли я понимаю, что подстановка значений в цикл будет выполняться как на второй картинке? Почему в аргументс попадают аргументы sum, а не анонимной функции в теле которой описан цикл?
arguments - локальная переменная определяемая в момент вызова функции, для функции typeCheck она своя, для анонимной функции - своя.
Соответственно при вызове sum(1, 2) в ней будет [1, 2]
PlasterTom: Мы не передаем вызов в typeCheck. typeCheck уже отработал, и превратил функцию sum в новую функцию:
function() {
for..
return original_sum.aaply(this, arguments);
}
И именно она и вызывается, и в ней arguments будет [1, 2]