loading...

Discussion on: Pure Array Modifications: Plain JavaScript vs. Modern JavaScript

sloths_r_cool profile image
Robin Kim

Nope, the function will remain pure because primitive types in JavaScript are passed by value. This means when i is passed in as an argument, pureInsert creates a brand new functional context that contains its own copy of i as opposed to referencing the original variable that was passed in. Since the function cannot mutate the original variable, purity is maintained.

let myNum = 1

const attemptMutation = (i) => {
  console.log(++i)
}

console.log(myNum)      // logs 1
attemptMutation(myNum)  // logs 2
console.log(myNum)      // still logs 1

If you really wanted to make the ++ operator "impure", you could use a higher-order function.

Thread Thread
renatomachado profile image
Renato Machado

I didn't know that. Thanks for the clarification.

Thread Thread
sloths_r_cool profile image
Robin Kim

Sure thing! :)