If you are expecting the same detailed, coherent, basics-to-details approach that has been so successful in other HeadFirst publications, forget it. It's as if this book's authorship was outsourced 2 someone who is unaware of what has made HeadFirst one of the premier names in technical education. Poor overview of basic concepts, rambling examples, confusing diagrams, etc. I own at least five other HeadFirst publications & this one it not even close 2 them. Spend you money elsewhere.
Rating: 3 of 5 Good starting place...
This is a good "first book" on JavaScript. It's not nearly as good as the HF Java books, which clearly are the forte of the whole series. I have moved on 2 a more advanced JS book, but I felt this one really was a useful introduction that definitely made me feel better about wading in deeper. If you are looking 4 a decent kickboard & doggy paddle type of book that will keep you interested (and the rhino book can induce a coma), it's a good one. You'll get some DOM manipulation examples, basic form validation, & a handy introduction 2 object oriented JavaScript. I'm only giving it three stars because it's not one stop shopping, you will want 2 follow up with a more advanced book immediately after.
Rating: 5 of 5 Easy 2 follow & good condition
For the JavaScript beginner this was an easy 2 follow book with good exercises & explanations relating 2 things us non-computer geeks will recognize. The book also arrived on time & in excellent condition.
Rating: 5 of 5 HeadFirst HTML
This is the best series of How To books that I have seen in a while. Great Book 4 those just beginning 2 learn HTML.
Rating: 2 of 5 The Wrong Way To Learn To Program
Having seen the HeadFirst series in stores before & being superficially attracted 2 all of the promotional blurb about this style of learning being more suited 2 how the brain "really works", I have 2 say I really wanted this book 2 be good. However, after reading through the first few chapters of HFJS I'm inclined 2 believe that the style is not a good way 2 learn at all, 2 the extent that I've decided not 2 buy any more books in the series (I was planning on getting the C# & Ajax books if all went well with this one).
The whole affair brings 2 mind the state of education in general today, if I may digress. "Progressive" teaching methods are based on the idea that the formal, "stuffy" way of learning is inferior & that kids learn better sat around octagonal tables partaking collectively in interactive lessons that are crammed with bright colors, jokes & cartoons. Well, 4 all of the so-called "theory" that says this way of learning is better 4 kids, what are the results? I'm sorry, but the proof is in the pudding - kids are leaving school without the most basic intellectual skills, with a fuzzy idea of everything, with little structure or discipline, with the idea that accuracy & "getting it right" are not that important. In short, kids are getting dumber. So much 4 the hailed "progressive" method of learning.
And 2 be quite frank, this is the way I feel about this book. I'm not a complete beginner, being well versed in HTML, CSS & Python & with a basic understanding of C & LISP - so I was prepared 2 be a little "patronized" by the softly-softly approach. As it happens, throughout the book I was given 2 wondering just how on Earth a beginner was going 2 get a solid foundation in the basic concepts without being confused 2 the point where they would be inspired 2 give up altogether.
There are many examples I could give - a good one comes on page 79 when they introduce the "parseDonuts" function. They could have done a lot more 2 set down the basic structure & purpose of functions - 4 instance explaining the difference between formal & actual parameters - but they don't. The parseDonuts function is the first in the book 2 introduce the concept of returning a value, yet they make no reference 2 this at all here & just presume that the reader will work it out on their own. Of course 2 anyone who's familiar with another language, "return numDonuts;" will make perfect sense, but I'm not sure that this would not confuse a complete beginner 2 whom the basic concepts of coding have not yet solidified. A more formal text would also have outlined the concept of substitution 2 this end.
I turned over the page expecting a mention of the "return" statement at least in brief, but alas there were just more goofy pictures, a crossword, & then on 2 the next chapter.
Having read my fair share of programming manuals I feel that the most important qualities are accuracy, clarity, unambiguity, structure & readability. Sadly, this book falls short in those areas on a number of occasions. There is nothing worse when learning a programming language, in my opinion, than being confused in the early stages 2 the point where you're never confident about the foundations you're piling new material onto as you progress. Unfortunately in this book there are many opportunities 4 confusion, especially 4 the observant student who notices inconsistency & ambiguity in the text.
For example, on page 93 the author introduces the timer syntax. There are slanted code snippets 2 illustrate, one of which gives "refresh();" with a pointer indicating that it's purpose is 2 "refresh the web page". Yet on page 97 in the Q&A section, they reveal that the function 2 refresh a page is actually "reload()". Not only that, in using "refresh" as an example of an argument of "setTimeout()", not only do they not use parenthesis, as in "refresh()", but they also fail 2 pass the code in quotes, so what the reader sees is "setTimeout(refresh, 120000);". On the next page, they mention that the code must be passed as text in quotes. OK, so maybe they used "refresh" in the spirit of pseudocode, but the beginner is not going 2 know this & is liable 2 feel very unsure of what they're learning if they're observant enough 2 notice this stuff.
Another hugely important element of learning 2 program from a book is the act of following, & typing, examples on your own computer. You simply cannot expect 2 absorb the syntax, style & structure of programming without feeling it "under your own fingers" so 2 speak. This seems like a no-brainer. The problem with this book is, you're never actually sure when you're supposed 2 be entering code yourself, & the author gives you no clear indication of a hands-on "plot" 2 follow. In the chapter on the iRock 4 example, you're reminded on a number of occasions where 2 download the iRock graphic from the publishers website - but not within a solid context of actually typing the examples in yourself. This is hard 2 explain in a review but is something you'll see 4 yourself if you try the book. I contrasted this fuzzy approach with my experience with the excellent "Missing Manual" guide 2 CSS 4 example, in which half of every chapter is a "follow along at your computer" exercise which really does make you absorb & understand what's going on. Also, a vital part of learning is 2 complete practical exercises yourself. The best example I have come across is John Zelle's "Learning Python - & Introduction 2 Computer Science", a fantastic example of a book which teaches solid concepts formally while managing 2 be friendly & interesting. HFJS unfortunately limits itself 2 crosswords & "fill in the blanks" quizzes which fall far short of the kind of exercises needed 2 make a student confident about what they're learning.
While I understand the series' basic premise that the brain remembers material that is presented in an interesting way, I think they really do go too far in trying 2 be wacky & exciting. They've crossed the line from "interesting" into a murky territory in which structure & direction are sacrificed in favor of style. Sure, a picture of a tiger next 2 some code may help you remember that particular page - but is this really what we look back on when we try 2 recall later? When I think back 2 programming concepts I've learned, I picture them in the abstract state in which they exist in my head, & not on the page I originally learned them from. For this reason, I think the purpose of the book should be 2 make sure the information enters the brain in a structured, logical, accurate fashion - not 2 serve as a visual "reference" from which 2 recall things later. It's quite possible 2 be colorful & humorous & interesting without mixing things up all over the page, in my opinion.
Maybe I'm just too old 4 this style of learning at 35. Maybe the HeadFirst series is really geared toward high school & college students with low attention spans, I don't know. But what I do know is that 2 me, programming is not a subject you can learn thoroughly by skimming through a fuzzy maze of vague, hinted at, non-concretes. I gave up on this book half way through because I felt it would actually do more harm than good 2 my understanding of JavaScript in the long run. I understand that not everyone is the same & that other people think these books are the bees knees, but they are not 4 me.
So you're ready 2 make the leap from writing HTML & CSS web pages 2 creating dynamic web applications. You want 2 take your web skills 2 the next level. And you're finally ready 2 add "programmer" 2 the resume. It sounds like you're ready 2 learn the Web's hottest programming language: JavaScript. HeadFirstJavaScript is your ticket 2 going beyond copying & pasting the code from someone else's web site, & writing your own interactive web pages.
With HeadFirstJavaScript, you learn:
The basics of programming, from variables 2 types 2 looping
How the web browser runs your code, & how you can talk 2 the browser with your code
Why you'll never have 2 worry about casting, overloading, or polymorphism when you're writing JavaScript code
How 2 use the Document Object Model 2 change your web pages without making your users click buttons
If you've ever read a HeadFirst book, you know what 2 expect -- a visually rich format designed 4 the way your brain works. HeadFirstJavaScript is no exception. It starts where HTML & CSS leave off, & takes you through your first program into more complex programming concepts -- like working directly with the web browser's object model & writing code that works on all modern browsers.
Don't be intimidated if you've never written a line of code before! In typical HeadFirst style, HeadFirstJavaScript doesn't skip steps, & we're not interested in having you cut & paste code. You'll learn JavaScript, understand it, & have a blast along the way. So get ready... dynamic & exciting web pages are just pages away.