Functions | JS Fundamentals

> Sometimes, the elegant implementation is just a function. > Not a method. Not a class. Not a framework. Just a function. > – John Carmack

Advance your knowledge of **functions** and functional patterns with comprehensive set of exercises. Go through interactive quizzes, and solve downloadable tasks to figure our how everything works together. Master concepts like arity, purity, side effects, memoization, mutability, scope, etc. Warning: your perception of the topic will change forever!



Signature (8 exercises)
Side Effects (15 exercises)
Determinism (19 exercises)
Scope (9 exercises)

51 exercises with solutions and explanations.

Before you start

1. We believe that a learning environment should be as realistic as possible. There are no Paste-n-Run sandboxes for coding tasks at Paqmind. You should use your own editor to write code and your own machine to run it – like a real programmer does.

2. Make sure you know the required theory, at least in the first approximation. Terms from the Topics should sound familiar for you. Refer to the Theory list below and always search for more. Start tomorrow (or next week) but start prepared.

3. Don't expect to pass the tutorial in one sitting. It's not a usual Easy-Level stuff made to massage your ego. We tried to make each exercise challenging, sometimes even discomfortable, yet enlightening. If you're here just to verify your knowledge, it may take a few days. But if you're new to the topic – it may easily take two weeks or more.

From the author

Function is the main building block of a code in high-level languages. You transform data, compose and decompose units of code, and even control space and time with functions. Functions come from algebra so mastering them is like mastering math: not easy, but truly rewarding. It's a huge topic so we can only scratch the surface of it in boundaries of a single tutorial. Nevertheless, every concept we cover here is super important and we suggest you to give it a go, especially if you don't have a CS degree. Let's learn by practice!





About the Author

Ivan Kleshnin
Fullstack Engineer

Experienced software engineer, mentor and entrepreneur. 12+ years in webdev. Generalist. Proponent of minimalism and 改善 (kaizen). In his free time, Ivan creates learning materials and blogs about programming and web development. As a mentor, prefers to give knowledge that will remain relevant over the years.


Challenge your friends and colleagues.