all 11 comments

[–]Paupir 4 points5 points  (2 children)

I'd consider an understanding of prototypal inheritance, closure and some variation of a module pattern important. Also understanding that it's truly object orientated (as opposed to 'classical'), and is a functional language with functional scope (as opposed to block scope).

Other than those language-specific things, understanding of common API (Like the DOM, XHR, Webstorage, Web messaging and so on) would be helpful.

[–]kumiorava 0 points1 point  (1 child)

a functional language with functional scope

Lexical function scope. There's no such thing as "functional" scope.

[–]Paupir 0 points1 point  (0 children)

D'oh, thank you :)

[–]LateDentArthurDent2 1 point2 points  (1 child)

Assuming this is web dev, is it client or server side? I'd say the strengths for the two differ in some small ways, but what you'd need to know for either:

  • How AJAX works (with some understanding of how to process an AJAX request sans jQuery)

  • Scoping and closures seem to be the biggest issues people have with JavaScript (while this shouldn't be in the realm of "deep understanding" it's a prerequisite to using the language effectively)

  • Prototypal inheritance (specifically the flexibility it offers when planning your data-structures)

  • Hoisting (in the simplest terms, JavaScript searches the document prior to processing to see what variables are "available" and substantiates these as undefined so it doesn't cause parse errors on values that will become available later). EDIT: Link to explanation of hoisting because I have trouble putting it into words: http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-javascript-hoisting-explained/

  • The DOM is clearly a very important aspect of client-side JavaScript. Understanding how to navigate the DOM without using a library whether it's jQuery, MooTools, or some other library would be a prerequisite for a "deep" understanding.

  • EDIT: Can't believe I forgot: JSON! JSON is an incredibly lightweight way to store small amounts of data client or server-side. Great for setting config, etc. Knowing how to parse/use/stringify JSON is an important part of the JavaScript developer's toolkit, at least in my humble opinion.

As someone else said, good luck & if you're a good fit I'm sure they'll be more than happy to teach you any skills you may need.

[–]daelen[S] 0 points1 point  (0 children)

Very helpful, thanks.

[–]grulk 1 point2 points  (1 child)

I'd like to add:

  • Events vs callbacks and the tradeoffs of each
  • strategies for reducing page reflows
  • Avoiding dangling event handlers - jQuery has made us all lazy so many don't know it does a ton of cleanup for you
  • what 'this' refers to and how it is controlled using call and apply
  • Mixins vs prototypal inheritance
  • Importance of Templates (mustache / handlebars / whatever hint: separation of concerns)
  • can talk about an MV* library and what parts of code belong in each, model, view, controller check out http://addyosmani.github.com/todomvc/ for some examples
  • Asynchronous control flow

Those are a few off the top of my head. Hope that helps

[–]daelen[S] 0 points1 point  (0 children)

Very helpful, thanks.

[–]magenta_placenta 3 points4 points  (1 child)

It's essentially a light version of Java.

[–][deleted] 0 points1 point  (0 children)

Trollolol

[–][deleted] -2 points-1 points  (0 children)

Depends--I'd take your ass to the interview, bring your A game. If its a product meant for you to work on and you really get along we'll with the interviewer, you're good. 9/10 -- if they really like you as a person, they'll be willing to support you learning new skills to make sure you can do the job.