Когда функция возвращает функцию, return - каким образом выполняется эта возвращаемая функция , когда оную еще не вызвали.. ведь - это не Самовызывающаяся функция ..?
Она не вызывается сама. Можно про замыкания глянуть
@Mishenko_Aleksandr там происходит не перезапись объекта, а переменной, которую передали в ф-цию, и перезапись именно внутри ф-ции, параметра, переименуйте b(a) в b(c) например, или не использовать параметр вообще