Really smart tutoring tool. I've seen other tutorials with editable javascript examples, but I think the combination of well chosen examples, use of asserts, and nice design brings it to a whole new level.
While we're on the topic of great JavaScript references for people learning the language, this one is worth considering: http://eloquentjavascript.net/
I think this is probably a re-post, but worth repeating for those who may have missed it.
Complete this, read JavaScript The Good Parts and JS becomes more pleasurable. If you're interested in improving, I highly recommend taking an hour to work through this tutorial in the console.
How does JS: TGP compare to JS: The Definitive Guide (Flanagan)? I have Flanagan but am curious as to whether TGP is worth buying also.
I also recently found the Crockford videos here: http://developer.yahoo.com/yui/theater/
I watched the first one yesterday. It was a nice intro to what I might call the philosophy of/behind JavaScript, and I'm hoping the others give me a few "aha!" moments about how to design my code.
I read TGP, and then I started using Google's Closure compiler. What I found was that Crokford recommends a lot of his own special ways of writing JS, and that they really aren't that great. To me Crokford's book is living in a pre-Closure-Compiler world, one where JSLint was the best tool to help you write good JS code, but in a CC world, Crokford's functional inheritance and use of JSLint are bad in the former, and unnecessary in the latter.
EDIT: Inheritance Patterns in JavaScript by Michael Bolin:
I don't have his book in in front of me, but I remember him introducing and using helper function on the Object prototype to aid in inheritance.
I read his book because it holds such an authoritative place in JS literature. Last year, I began writing an application which has grown to over 6K lines of JS. At this level, pure JS become unwieldy, IMO. I went looking for a technology to help my code stay organized, optimized, and well documented. Closure Compiler was it. But since I had created my inheritance structure following Crokford's functional methodology, CC wouldn't work with it. Also, the only game in town for documenting JS, is jsDoc, in it's various incarnations. At 7K LOC, I wanted good docs for future developers. jsDoc doesn't work with functional inheritance either, strictly prototypical.
The bottom line for me is: Read the book, for sure, but if you plan on writing a large JS application, and go looking for help from a technology like CC (or maybe even DoJo), beware, that Crokford's recommendations (and they do come authoritatively) might put you in a place where you have to do a lot of refactoring down the road.
I haven't read/used TDG in a while; I have read/used TGP recently. TGP is definitely "Aha," compared to TDG's "Oh, OK." Both have their place; TGP is handier to understanding and working with some of JS' quirks.
TGP teaches the language, its interpreter and some styles that can be used as building blocks for JS applications.
TDG is a reference for the language, DOM implementations (which is a large portion of the book), tools and many aspects of the JS ecosystem.
The Good Parts is concise and elegant; reading and practising it thoroughly will lead to a sound understanding of what makes JS a uniquely powerful language.
Read both, but if you can only manage one make it TGP.
It's great, but certainly is pretty old - look at the source of the linked jQuery: "jQuery 1.2.6 - New Wave Javascript"! I don't think that tag line stuck ;)
Most of the time I use Chrome's console and node in a terminal.
If I'm in Emacs I might fire up swank-js[1] which lets me interact with standalone JS interpreters like v8 and Rhino, but also contains a server that bridges the gap between the major browsers. Simply open up a web page in Firefox, Safari, Chrome, or Opera and then interact with that browser's JS engine from Emacs.
Firebug for something quick, Rhino for something that is repeated often enough to be scripted. Occasionally Chrome's built-in console, but I just don't like it it as much as firebug.
I've played with node.js a bit, but when I toyed with it it wasn't anywhere near production ready. (This was over a year ago, I might come back to it again sometime soon.)
http://news.ycombinator.com/item?id=823347