Прекращает ли свою работу функция(не void) после того как вернет значение?
Да.
После выполнения последнего оператора, выполнения return или неперехваченного внутри throw прекращает, после yield приостанавливает.