Нет, вы не можете этого сделать.
Вместо этого вам лучше всего вернуть новый объект и переназначить при вызове:
function f(obj) {
return _ => console.log(
'LOCAL object was replaced, how to replace from the outer scope?');
}
fetch = f(fetch);
Кроме того, вы можете передать контейнер, в котором целевой объект является частью его состояния, и обновить состояние этого контейнера:
function f(container) {
container.obj = _ => console.log(
'LOCAL object was replaced, how to replace from the outer scope?');
}
var c = {obj: fetch};
f(c);
// ...use c.obj...
или
function f(container) {
container[0] = _ => console.log(
'LOCAL object was replaced, how to replace from the outer scope?');
}
var c = [fetch];
f(c);
// ...use c[0]...