Web 2.0 Development and Business Lessons: You Don’t Know JavaScript
►http://www.w2lessons.com/2011/04/you-dont-know-javascript.html
A basic level of understanding for JavaScript includes:
Knowing the syntax of basic programming tools such as loops, if statements, try/catch, etc.
Understanding function definitions including the various ways they can be defined and assigned, as well as anonymous functions
Understanding basic scope principles, global (window) scope versus object scope (closures excluded)
Understanding the role of context and the use of the ’this’ variable
Understanding the different ways to instantiate and declare an object as well as functions as objects
Understanding JavaScript comparison operators like ’<’, ’>’, ’==’, ’===’, what is falsy, and how object and string comparison works, as well as casting
Array indexing for object attributes and functions and how this differs from actual arrays (object literals vs. array literals)
An intermediate level of understanding includes:
Understanding timers, how they work, and when/how they can be useful as well as asynchronous method execution
In depth knowledge on callbacks and function application such as the ’call’ and ’apply’ methods for controlling context and function argument passing
Understanding JSON notation and the ’eval’ function
Understanding closures, how they affect the performance of your code, and how they can be used to create private variables, along with the lovely (function(){})() call
AJAX and object serialization
An advanced level of understanding includes:
Understanding a methods ’arguments’ variable and how it can be used to overload functions through arguments.length and make recursive calls through arguments.callee. It should be noted that use of arguments.callee can be dangerous as ECMAScript 5 Strict Mode doesn’t support it, although both jQuery (up to 1.4) and Dojo take advantage of it.
Advanced closures such as self-memoizing functions, currying, and partially applied functions
Function and html prototyping, the prototype chain, and how to use base JavaScript objects and functions (e.g. Array) to minimize coding
Object type and the use of instanceof and typeof
Regular expressions and expression compiling
With statements and why you shouldn’t use them
The most difficult part of all, knowing how to tie all these tools together into clean, robust, fast, maintainable, and cross browser compatible code.