Функция ВСЕГДА вызывается со скобками, а в вашем примере запись
let message = "Hello!";
let res = (() => message)();
равнозначна
let message = "Hello!";
let res = message;
Так что получается, "res" - это не функция а еще одна строка.
И при изменении "message", она естественно остается прежней.
Но если для вас не принципиально использование функции, то вы можете заменить её на свойство:
let message = "Hello!";
Object.defineProperty(this, 'res', {
get() {
//Здесь, если нужна, какая то логика
return message;
}
});
console.log(res);
message = "world!";
console.log(res);