Keep in mind, particularly with objects and arrays you can achieve immutability with object and array spread operators respectively as follows : With objects: let a = {x: 1} let b = {...a} b.x = 2; console.log(a.x) // still x === 1 With arrays : let a = ["one"] let b = [...a] b[0] = "two"; console.log(a.x) // still outputs as "one" Cheers !