Positives The reviews for this book highlight its strengths in providing a deep and conceptual understanding of JavaScript. Many commend the author's accessible, intelligent, and often poetic writing style, noting that the book tackles fundamental programming concepts beyond mere syntax, including functional programming, object orientation, modularity, and reusability. Reviewers frequently praise the creative and engaging examples, which, for some, make the learning process enjoyable and insightful. The book is considered essential by several readers for understanding how to write modern JavaScript applications, such as single-page apps and those utilizing Node.js, and is valued for its depth in solidifying existing knowledge. Additionally, the online version is appreciated for being freely available and offering interactive features like mouse-over definitions and executable code examples.
Negatives However, a significant number of reviews express strong criticism, primarily centered on the book's misleading title and pedagogical shortcomings. Many reviewers emphatically state that it is not suitable for true beginners, despite being labeled an "introduction." Critics frequently point to a lack of pedagogical clarity, with some finding easy concepts over-explained while difficult ones are treated too cursorily. The examples are often described as overly abstract, convoluted, or nonsensical, using humorous but distracting metaphors that, for many, obscure the underlying programming concepts rather than illuminating them. Reviewers also found that new ideas and operators are introduced without adequate prior explanation, leading to confusion and a need for external research. The exercises are commonly perceived as insufficient in number and too challenging, often requiring knowledge not covered in the preceding text or presenting problems with large gaps from the material. Other issues noted include poor organization, confusing variable names, and code examples that lack comments or proper documentation, making them difficult to follow.
Conclusion In conclusion, the book receives a highly mixed reception, with its value largely dependent on the reader's existing programming experience. While it is lauded by some as a fantastic resource for deepening conceptual understanding and promoting functional thinking, it is widely considered unsuitable and potentially demoralizing for absolute beginners. The book is best suited for intermediate programmers or those with a solid foundation in other languages who wish to gain a more profound, conceptual understanding of JavaScript and its modern applications. Readers who enjoy a challenge, appreciate abstract thinking, and are willing to supplement their learning with external resources may find significant value in its unique approach and comprehensive coverage of advanced topics.