Reputation: 901
Having
const assign = (a, fn) => {a = fn(a)}
and for instance
let a = 5
const double = (a) => a*2
assign(a, double)
a
still evaluates to 5. Same goes for Strings (which are objects).
Upvotes: 1
Views: 273
Reputation: 31992
Function parameters are passed by value.
You can instead make a
an object, and modify its property.
const assign = (a, fn) => {
a.value = fn(a)
}
let a = {value: 5}
const double = (a) => a.value * 2
assign(a, double)
console.log(a.value)
Upvotes: 2