Ask HN: What is "expert" level Javascript?
I figure the answer to this question is when you are so experienced (and confident) that it simply becomes irrelevant. But I'm curious about everyone else's perception.
Here are a few things:
* understanding prototypal inheritance, e.g. knowing what __proto__ means
* knowing how to model asynchronous code in several ways, e.g. using callbacks, events or even using promises
* understanding how an event loop works
* knowing perf related stuff (though one should always benchmark stuff)
An idea. If you can create a library or tool set that solves many of the most commonly used (important) aspects of JS and more than one person (besides you) can use effectively, then I think you might be expert.
I would say that knowing how operators are affecting your code is something that a lot of JS devs probably don't fully grok. For example, why this works: ~function(){}(); or why this... x = (y = 1, 3) ... sets x equal to 3 and y equal to 1. It's not too useful in day-to-day coding, but it shows a deeper understanding of what's going on in there.
Read JavaScript The Good Parts. Some chapters are pretty difficult. I'd say if you can fully understand and apply everything in that book, you're an expert.
Also Addy Osmani free books on large scale javascript applications and design Patterns patterns are very good.
I would expect an expert to know the correct answers to most questions in kangax's quiz: http://perfectionkills.com/javascript-quiz/
A friend of mine once told me that someone who knows Javascript inside out knows how to do things in jQuery with bare javascript.
good question...i wonder the same thing
An expert would know the ecma spec inside and out, know what javascript does differently from similar procedural languages, know how to approach performance and memory management issues, know common practical development patterns, know the DOM and the new HTML5 APIs, know the differences in the implemented capabilities of commonly used browsers, and have studied (or helped write) one of the open-source implementations.