Эта строка:
var a = function() {console.log(5);}
... создает объект в памяти - функцию - и сохраняет ссылку на него в a
.
Аналогично, эта строка:
b = a;
... сохраняет в b
ссылку на a
.
Итак, вы должны быть в состоянии предсказать, что делает эта строка:
a = function() {console.log(6);}
Хранит ссылку на какую-то новую функцию в a
. Это никак не влияет на b
. Другими словами, b
- это , а не и псевдоним для a
. Случайно, что он когда-то указывал на ту же область памяти, что и a
. Это отдельные независимые переменные, способные указывать на любой произвольный объект в памяти. Конечно, они могут указывать на один и тот же объект, но это так же важно, как и когда-либо.