This site is a preview of the curriculum for our Summer 2018 bootcamp in Burlington, Vermont. As we continue our preparation, courses and lessons will appear and disappear; we will rename, rearrange, clarify, and obfuscate as needed... Please consider this a work in progress and keep checking in.

 Intermediate JavaScript:
JavaScript for Programmers


This lesson is a whirlwind tour of JavaScript features for people already fluent in another programming language. For a more measured and beginner-focused tutorial, check out the Learn to Code with JavaScript track instead.


JavaScript Basics

"In JavaScript, there is a beautiful, elegant, highly expressive language that is buried under a steaming pile of good intentions and blunders." - Douglas Crockford, JavaScript: The Good Parts


JavaScript has seven data types; six are called primitives:

  • Boolean
  • Null
  • Undefined
  • Number
  • String
  • Symbol (new in ECMAScript 6)

Object (sometimes called "hash") comprises all other types, including

  • RegExp
  • Function
  • Date
  • Map
  • etc.

MDN: JS Data Structures


  • JS Object acts as a Hash (aka Map or Dictionary)
  • Keys are converted into strings
  • Values can be any type


  • Properties are values stored on an object
  • Accessed two ways:
    1. dot
    2. bracket user['name']


Looping over the elements of an array

The normal way:

for (var i = 0; i<a.length; ++i) { ... }

In old JavaScript implementations, the above suffers from a performance problem, so you may see the following recommended instead:

    for (var i = 0, n = a.length; i<n; ++i) { ... }


  • == performs type coercion
  • this leads to some improbable results
2 == [2] // true

The above evaluates as if it were expanded thus:

2 === Number([2].valueOf().toString())

see also Why does 2 == [2] in JavaScript?

More equality madness

""           ==   "0"           // false
0            ==   ""            // true
0            ==   "0"           // true
false        ==   "false"       // false
false        ==   "0"           // true
false        ==   undefined     // false
false        ==   null          // false
null         ==   undefined     // true
" \t\r\n"    ==   0             // true


Moral: always use === (triple equal)


General JavaScript Resources


comments powered by Disqus