Your Garage Best Books of the Month Amazon Fashion Learn more Discover it $5 Albums Fire TV Stick Sun Care Patriotic Picks Shop-by-Room Amazon Cash Back Offer roadies roadies roadies  Amazon Echo  Echo Dot  Amazon Tap  Echo Dot  Amazon Tap  Amazon Echo Introducing new colors All-New Kindle Oasis AutoRip in CDs & Vinyl Segway miniPro STEM
Customer Review

237 of 260 people found the following review helpful
3.0 out of 5 stars Some good data, but scattered and inconsistent, unclear who it's written for., January 20, 2011
Verified Purchase(What's this?)
This review is from: JavaScript: The Good Parts: The Good Parts (Kindle Edition)
I'm a long-time C, C++, and Java programmer (videogames, predominantly) learning Javascript to do some web work, so I picked up this book because the reviews were good and the notion appealed to me - learn the subset of this rather sloppy language that you can use as a good language.

My TL;DR version of the review: this book is a hodgepodge of different information about the language, but some of it is so complicated it'll go immediately over the heads of new programmers, and then some of it is so mundane (even pedantic, talking about very specific aspects of coding styles) it felt goofy and out of place. It seems to me that any specific individual reading this book won't really find more than one or two chapters very relevant. I give it 3 stars because the useful parts were useful to me, but I skimmed and ignored 80+% of the book.

Crockford's writing is personable and clear, and the book's organization is straightforward. Here's my chapter-by-chapter breakdown. Note that this is all from my perspective, what I personally found useful or not, but my point is, while other readers will certainly disagree with me about what was useful, I have trouble imagining any one person finding more than about 20% of the book useful.

Chapter 1 is an introduction and high-level explanation of the point of the book.

Chapter 2 covers basic grammar and the likes, which was helpful though it's not aimed at any particular familiarity with other languages so it's trying to be comprehensive, which meant that as an experienced programmer in other languages I had to skim it and just look for differences with what I'm already used to.

Chapters 3 and 4 were the most useful parts of the book for me: the section on objects and functions, data scoping and closure, which really takes a new way of thinking if, like me, you have a lot of experience with languages without closure and anonymous functions and the like. Crockford does a good job of explaining this and giving relevant examples. This section was 20% of the book and was the only section I found really useful.

Chapter 5 covers inheritance. He presents two methods, one using new and constructors like one of the languages I'm more used to, and gives a couple reasons to avoid this, and then digs into the prototypal method, which is unfamiliar to me. The problem is that he uses totally abstract examples here - classes representing animals and methods that return their names or the noises they make - and it was very hard for me to relate it to any actual application, and since the prototypal style is a fundamentally different paradigm I don't feel like I really grasped it from his writing. Since he builds a framework of extension methods throughout the book, once I started to lost his train of logic I was utterly lost. And the "meta" nature of javascript, assigning functions to methods that return other functions that wrap functions, I found it easy to get lost.

Chapter 6 covers arrays. If you've used scripting languages this stuff is very simplistic, a stark change from Chapter 5, which is quite sophisticated. Again, my point here - I don't know who would simultaneously understand Chapter 5 and still find anything in Chapter 6 useful.

Chapter 7 is a significant change of direction; it's a long chapter on regular expressions which I skimmed very quickly since I know them from using perl. This part seemed odd, since regular expressions are common to several languages, and there's nothing particularly unique about javascript's usage of them. It felt a bit misplaced in this book. Certainly they're an important part of the language, but again made me wonder: who's the book for?

Chapter 8 is a reference for core API functionality and his extension methods; this feels like stuff I'd just google while coding, not terribly valuable to me personally.

Chapter 9 is a diversion on coding style, and felt wildly out of place and kind of insulting: if this book is for a seasoned programmer this is just going to trigger unpleasant flashbacks to arguments you had back when you were a junior programmer. If you're a new programmer and this stuff is news to you, other chapters in the book are going to be utterly incomprehensible to you.

Chapter 10, "The Beautiful Parts," is all of a page long, but a nice summary of the good aspects of the language.

Appendices A and B cover some of the "Awful & Bad Parts" of javascript in detail; this was the second-most interesting part of the book to me, though it's brief and you've picked it up if you read the rest of the book. Still, definitely value here. Though worth noting: he inserts some more editorializing here, ala Chapter 9 - he calls out some things that aren't specific to javascript, like switch statement fallthrough, as bad parts, which I found annoying. Stick to aspects unique to javascript and point out real dangers instead of offering advice on very broad aspects of coding style, I kept thinking.

Appendix C is about JSLint, the lint for javascript. It was useful only in the sense that I didn't know JSLint existed, and now I do, but then he gives a long swath of what amounts to JSLint documentation, which I have to imagine exists on the JSLint site, and felt like filler.

Appendix D is about JSON and just some reference information about the format. Maybe useful, but no authorial insight, just docs.

Overall, glad I read it, but I was pretty underwhelmed given the generally great reviews of the book on here.
Help other customers find the most helpful reviews 
Was this review helpful to you? Yes No

[Add comment]
Post a comment
To insert a product link use the format: [[ASIN:ASIN product-title]] (What's this?)
Amazon will display this name with all your submissions, including reviews and discussion posts. (Learn more)
This badge will be assigned to you and will appear along with your name.
There was an error. Please try again.
Please see the full guidelines here.

Official Comment

As a representative of this product you can post one Official Comment on this review. It will appear immediately below the review wherever it is displayed.   Learn more
The following name and badge will be shown with this comment:
 (edit name)
After clicking the Post button you will be asked to create your public name, which will be shown with all your contributions.

Is this your product?

If you are the author, artist, manufacturer or an official representative of this product, you can post an Official Comment on this review. It will appear immediately below the review wherever it is displayed.  Learn more
Otherwise, you can still post a regular comment on this review.

Is this your product?

If you are the author, artist, manufacturer or an official representative of this product, you can post an Official Comment on this review. It will appear immediately below the review wherever it is displayed.   Learn more
System timed out

We were unable to verify whether you represent the product. Please try again later, or retry now. Otherwise you can post a regular comment.

Since you previously posted an Official Comment, this comment will appear in the comment section below. You also have the option to edit your Official Comment.   Learn more
The maximum number of Official Comments have been posted. This comment will appear in the comment section below.   Learn more
Prompts for sign-in


Track comments by e-mail
Tracked by 2 customers

Sort: Oldest first | Newest first
Showing 1-10 of 13 posts in this discussion
Initial post: Mar 3, 2011 3:10:30 PM PST
Thanks for this excellent thoughtful review. I'm coming from a similar background so your insights are quite useful.

Posted on Dec 15, 2011 10:05:14 PM PST
Totally agreed; I came here to write some idea similar to these but this is an awesome and detailed review. I'd rather give 2 stars though...

Posted on Mar 30, 2012 8:19:14 AM PDT
R. W. Mercer says:
A very helpful review, thanks for helping me decide that this book is probably not for me.

Posted on May 8, 2012 6:20:33 AM PDT
Experience tends to make a lot of things a lot easier and other things harder. Maybe it wouldn't seem like such an odd mix if you didn't have the C, C++ and Java experience.

Posted on May 8, 2012 1:30:42 PM PDT
Thanks for the review. I'm more inclined to buy this book now

In reply to an earlier post on May 8, 2012 1:54:43 PM PDT
Brian Sharp says:
I do know what you mean. I tried to think about that when writing the review; I think even trying to put myself in the shoes of a beginner, there are things that seem like odd choices.

First, the inheritance / aggregation / composition stuff is deep. I mean, that's serious stuff, and his examples are not real examples, they're "Mammal : Cat" kinds of examples, so I know that when I was just getting started, his quick and kind of abstract treatment of it would have just gone right over my head.

And second, some of it just feels peripheral. Regular expressions, for example - Javascript's regular expression syntax is essentially the same as perl's, C#'s, etc. It's certainly important to know regular expressions if you're going to use javascript heavily, but does that mean that they should be in a book about javascript? That's just a question of domain, I guess. What do you put in a book about a language? Where do you draw the line when something is just a related system?

I will concede that when I wrote the review I didn't realize Crockford wrote JSLint himself! That changes my understanding a bit of the portion about JSLint, though I STILL think it's odd because all he did was essentially copy and paste the docs in. Why not just say "This is a thing I've built that is very important to use. Go check it out," and give an overview of it.

To each her own; maybe this seems like a more intuitive mix to you, and obviously that's fine, I'm not saying anyone ought to agree with me. But for my money, I'd have far preferred he omit the JSLint and regexp sections, among others, and devote more time to the core stuff like object inheritance and really dig into some real examples with that.

I guess a good metaphor for the way I see the book is if I wrote a book about automobiles, and I had one chapter for "the engine" and one chapter for "accessory lights" and one chapter for "windshield wipers" and one chapter for "tires" and they were all equal length. I guess it depends what you're trying to do with cars, but I just feel like most people reading a book about how cars work want more time devoted to explaining engines in depth and probably need less information about the windshield wipers... and it's also probably fine to say "Your car depends heavily on a variety of light bulbs but the inner workings of the various kinds of light bulbs is beyond the scope of this book, check out some other resources." (ala the regular expression stuff.)

Anyway, thanks for the thoughtful comment because you're absolutely right, there are definitely people out there in situations where this book will be useful to them. I even gave it 3 stars because I got useful info out of it myself.

In reply to an earlier post on May 8, 2012 1:55:44 PM PDT
Brian Sharp says:
Cool, you're welcome. Yeah, I find myself referring back to it on occasion, and I do not regret the purchase. My 3 stars and critique are just meant to say, I think this book could have been quite a bit better. But there's certainly utility here.

Posted on Aug 8, 2012 9:16:48 AM PDT
Last edited by the author on Aug 8, 2012 9:20:05 AM PDT
A. Tolley says:
This is not combative, but I think that this book is not a hodgepodge at all. Now I say that as the intended target for the book, so perhaps who that is could be made more clear. If you are a developer moving from any statically typed, object oriented languages like C# or Java, JavaScript looks similar, but is very confusing because of some nuances of the language and a fundamentally different approach to the concept of objects.

This book covers, in a very concise manner, the particulars of the language, all while using previously introduced material to drive examples, thereby reinforcing the previous material. The book's linear progression ( which again disqualifies it as a hodgepodge ) establishes a very effective approach to writing JavaScript programs and modules. Crockford's guidance may only establish one out of many viable approaches but following it closely allows developers who are experienced with other paradigms to quickly adopt a deeper understanding of the language, and its small but profound differences with class-based OOP languages.

That is not to say your review is not valid and very helpful to prospective buyers of the book, just some context for the rational behind its otherwise seemingly arbitrary structure. And my suggestion to the more experienced programmers who get this book: It's short, so grin and bear the parts you know, because skimming can disrupt the context in which more subtle points are raised.

In reply to an earlier post on Jun 19, 2013 9:12:03 AM PDT
Good review and good comments. Given the feedback on this book, I'll surely purchase it. I also like that its supposedly short and to the point.

In reply to an earlier post on Aug 1, 2013 9:49:59 AM PDT
Have you come across a better book that can help increase a budding Javascript coder's toolbox? I've completed Coding Academy's Javascript coursework and trying to figure out where to go from here.
‹ Previous 1 2 Next ›

Review Details