В чем разница между функцией, передаваемой в качестве функции обратного вызова аргумента, и функцией, вызываемой внутри другой функции после вызова некоторого кода?
Это то же самое, что и в любое время передать аргумент вместо использования жестко запрограммированного значения.
У вас может быть логика c, которая является последовательной, и добавить различия в поведении в зависимости от значения, которое вы передаете.
Это просто:
function add_two_numbers() { return 1 + 2; }
Это гибко:
function add_two_numbers(a, b) { return a + b; }
Когда мне следует использовать каждый сценарий?
Когда вы хотите исправить или переменное поведение.