Это не указатели на функции (и в JS нет указателей изначально). Функции в JS могут быть анонимными и являются объектами первого класса. Следовательно
function () { alert("A"); }
создает анонимную функцию, которая предупреждает «A» при выполнении;
var bar = function () { alert("A"); };
назначить эту функцию на бар;
var foo = bar;
назначить foo для bar, который является функцией "A".
bar = function () { alert("B"); };
привязка бара к анонимной функции "B". Это не повлияет на foo или другую функцию «A».
foo();
Вызовите функцию, хранящуюся в foo, которая является функцией «A».
На самом деле на языках, где есть функциональные точки, например, С это тоже не повлияет foo
. Я не знаю, откуда у вас идея получить "B" при переназначении.
void A(void) { printf("A\n"); }
void B(void) { printf("B\n"); }
typedef void(*fptr_t)(void);
fptr_t foo = A;
fptr_t bar = foo;
bar = B;
foo(); // should print "A"