Но факт в том, что counter.currentCount = 1 стоит до возврата функции, следовательно сначала выполнится сбрасывание значения переменной и только потом возврат функции
Да, код короткий и рабочий, но он плохой с точки зрения читабельности, не все сразу поймут, что в нем происходит, там уже нужно будет разбираться, так что лучше уж все по действиям выполнять и подробно расписывать.
Так не инициализированная переменная, вроде получает значение undefined, нет? Т.е. значение переменной f (undefined) будет сравниваться со значением undefined. undefined !== undefined
Разобрался, в инструкции объявления функции result, её нужно было всего лишь инициализировать с пустой строкой: result = ‘’, чтобы мы заполняли пустую строку новыми символами, а не строку содержащую undefined.