В JavaScript функции и объекты (включая массивы) присваиваются переменным по ссылке, а строки и числа присваиваются по значению, то есть путем создания копии.Если var a = 1
и var b = a
и b++
, a
будут по-прежнему равны 1.
В этой строке:
exports.count = count; // let's also export the count variable itself
вы сделали побочную копию счетапеременная.Все операции setCount (), incCount () и showCount () работают с переменной count внутри замыкания, поэтому m.count больше не затрагивается.Если бы эти переменные работали с этим.счетом, то вы бы получили ожидаемое поведение, но, вероятно, вы все равно не хотите экспортировать переменную count.