Curcuma_
Curcuma_

Reputation: 901

Why is assignation not working in lambda function

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

Answers (1)

Spectric
Spectric

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

Related Questions