Although I thoroughly appreciate the intent of this introductory page, a really bad way of teaching something to the neophyte is to lead with examples of what NOT to do. If they are to appear at all the place for them is far, far down at the page when all the good examples of what to do has been understood and memorized.
Also, the author should probably put something at the top stating who the introduction is intended for. It is clear to me that it is not for newbie programmers, but that would not be clear to the actual newbie.
A beginner could very well set out thinking that this is the perfect introduction to programming for them. And then in the first paragraph discover the semantically very rich phrase "Javascript is a dynamically typed language". To a programmer that is valuable information but to the beginner it just confusing.
The best method of teaching, in my experience, is to start with the fundamentals (a skeleton model at a high level of abstraction) even if it's not fully accurate and then fill in the details and all of the cautionary advice bit by bit, building up the skeleton model into a more robust and full featured model.
for...in loops also have the drawback of iterating over inherited properties. eg if I extended the prototype of Array with some method, then for...in would iterate over that method too.
traditional for loops incrementing until length is reached are preferable for arrays (personal style: for(var i=0,l=array.length ; i<l ; i++))
For objects, for...in with a hasOwnProperty check is preferred, I think (if you're going to be iterating over objects that is, which usually means you're using an object as a textually-indexed array, which isn't that great).
Yes, my problem was with people then wanting to iterate over said hashmap, not with using it as a hashmap in the first place. I could have worded that better, thanks.
I mean if you're going to want to iterate over it, you should probably be using an array instead.
Another interesting introduction I can recommend was written by a friend of mine. It focuses more on the semantic differences to other languages (e.g. prototype based inheritance) as to the syntax:
The first few lines are misleading - Javascript doesn't really have an integer type. At least for Ecmascript 5 http://www.ecma-international.org/publications/files/ECMA-ST... both integers and floats are stored as IEEE floats and the type is called Number. "Small enough" integers are stored exactly so this works well enough in practice.
(Despite this, it does have some functions for converting and parsing integral values.)
Ecmascript 4 (abandoned) had some support for an Integer type (it was a kind-of pseudo-type mess where the value of a Number was checked to see if it was an integer or not).
I teach a series of classes about the web for designers, and this is a great start. It may not be perfect, but in terms of a basic intro to express common structures to anyone with a background in any other language (for example, my students all know php) it's a good summary, and an appropriate bare-bones jumping-off-point into more specific topics.
Also, the author should probably put something at the top stating who the introduction is intended for. It is clear to me that it is not for newbie programmers, but that would not be clear to the actual newbie.
A beginner could very well set out thinking that this is the perfect introduction to programming for them. And then in the first paragraph discover the semantically very rich phrase "Javascript is a dynamically typed language". To a programmer that is valuable information but to the beginner it just confusing.