
Just because your program contains functions does not necessarily mean that you are doing functional programming. How can you possibly program without those features? That's exactly what we are going to explore in the next few sections.

It, along with pure functions, makes it easier to reason about and debug your programs. Immutability is a core tenet of functional programming. In frameworks such as Angular and React, you'll actually get a performance boost by using immutable data structures. Recently there has been a growing trend toward functional programming. JavaScript is a multi-paradigm language that allows you to freely mix and match object-oriented, procedural, and functional paradigms. Those first-class functions are what makes functional programming possible in JavaScript.

Java technically did not have first-class functions until version 8, however you could simulate first-class functions using anonymous classes. Eich eventually settled on a language that has a C-style syntax (as does Java), yet has first-class functions. Things changed when Eich was told that the new language should be the scripting language companion to Java. Scheme, being a dialect of Lisp, is a functional programming language. When Brendan Eich created JavaScript in 1995, he intended to do Scheme in the browser.
