Вы на правильном пути. Все, что вам нужно, - это замыкание и локальная переменная.
function gen () {
let state = false;
return function () {
return state = !state;
}
}
const trueFalse = gen();
trueFalse() //true
trueFalse() //false
Что касается комментария, то это можно сделать без замыкания, используя свойство самой функции.
function trueOrFalse () {
return trueOrFalse.state = !trueOrFalse.state;
}
trueOrFalse() //true
trueOrFalse() //false