Day 76/100 The Book
Tags: 100daysofcode, javascript, programming, challenge
Published: 2021-11-30 13:34:00


Learning is a continuous process with resources widely used with people who acknowledge the challenging journey of accomplishing a successful goal. Though it can be daunting at first, once you grasp the flow and understand the definitions of each detail, one would be grateful for their fruit of labor. 


![The Book V3](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7j4g2b4slwcwpqtdadw.png)


## The Chapters

This book renders an excellent understanding of the history of JavaScript. It consists of twenty-one chapters with unique motivational quotes as an introduction to each section. Each part discusses the basics of the language, accessibility, and primary functions. It is curated to fully understand the whole concept and interactive approach of grasping information. Additionally, examples and exercises are uniquely designed to get the feel of the language.

####A code example shown in a specific part:

```
let rabbit = {};
rabbit.speak = function(line) {
  console.log(`The rabbit says '${line}'`);
};

rabbit.speak("I'm alive.");
// → The rabbit says 'I'm alive.'

```


The following are the three parts with twenty-one chapters inside the book:

**Part 1: Language**
 1. [Values, Types, and Operators](https://eloquentjavascript.net/01_values.html)
 2. [Program Structure](https://eloquentjavascript.net/02_program_structure.html)
 3. [Functions](https://eloquentjavascript.net/03_functions.html)
 4. [Data Structures: Objects and Arrays](https://eloquentjavascript.net/04_data.html)
 5. [Higher-Order Functions](https://eloquentjavascript.net/05_higher_order.html)
 6. [The Secret Life of Objects](https://eloquentjavascript.net/06_object.html)
 7. [Project: A Robot](https://eloquentjavascript.net/07_robot.html)
 8. [Bugs and Errors](https://eloquentjavascript.net/08_error.html)
 9. [Regular Expressions](https://eloquentjavascript.net/09_regexp.html)
 10. [Modules](https://eloquentjavascript.net/10_modules.html)
 11. [Asynchronous Programming](https://eloquentjavascript.net/11_async.html)
 12. [Project: A Programming Language](https://eloquentjavascript.net/12_language.html)

**Part 2: The Browser**
 13. [JavaScript and the Browser](https://eloquentjavascript.net/13_browser.html)
 14. [The Document Object Model](https://eloquentjavascript.net/14_dom.html)
 15. [Handling Events](https://eloquentjavascript.net/15_event.html)
 16. [Project: A Platform Game](https://eloquentjavascript.net/16_game.html)
 17. [Drawing on Canvas](https://eloquentjavascript.net/17_canvas.html)
 18. [HTTP and Forms](https://eloquentjavascript.net/18_http.html)
 19. [Project: A Pixel Art Editor](https://eloquentjavascript.net/19_paint.html)

**Part 3: Node**
 20. [Node.js](https://eloquentjavascript.net/20_node.html)
 21. [Project: Skill-Sharing Website](https://eloquentjavascript.net/21_skillsharing.html)



## The Exercises

Some of the sections contain exercises that practice what you have learned. Most of them are three parts with different methods of showing how the particular element could be used. Each has instructions to follow and hints to give an idea of how to implement the code. 

####An example exercise:

**Disk persistence**
The skill-sharing server keeps its data purely in memory. This means that when it crashes or is restarted for any reason, all talks and comments are lost.

Extend the server so that it stores the talk data to disk and automatically reloads the data when it is restarted. Do not worry about efficiency—do the simplest thing that works.

**Hints**
*The simplest solution I can come up with is to encode the whole talks object as JSON and dump it to a file with writeFile. There is already a method (updated) that is called every time the server’s data changes. It can be extended to write the new data to disk.*

*Pick a filename, for example ./talks.json. When the server starts, it can try to read that file with readFile, and if that succeeds, the server can use the file’s contents as its starting data.*

*Beware, though. The talks object started as a prototype-less object so that the in operator could reliably be used. JSON.parse will return regular objects with Object.prototype as their prototype. If you use JSON as your file format, you’ll have to copy the properties of the object returned by JSON.parse into a new, prototype-less object.*

## Code Sandbox
Every exercise has an example solution where you can compare your code. It could be challenging to understand the instructions, but the hints would help you better solve the problem.
[Code Sandbox Link](https://eloquentjavascript.net/code/)


## Summary

Having read the book enlightened me of how tough it is to learn JavaScript. I would not say I remembered every detail and solved every exercise. It takes significant effort and time to master the language fully. Reading it alone would not make me one but instead, educate me on how great and brilliant the people are behind this book. It is the third edition, and I am pleased to stumble upon this book and have the time to feel all the sensation of being an expert on a specific skill.