Since ES6, JavaScript has made it easier to implement software solutions using FP. Many engine optimizations have been added that allow for better performance when programming JavaScript according to FP principles. Mapping, filtering, reducing and tail-call optimization are some of these techniques.