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.


 JavaScript Topics:
JavaScript for Programmers


 Slides

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

Types

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

Objects

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

Properties

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

Arrays

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) { ... }

Equality

  • == 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

(from http://bonsaiden.github.com/JavaScript-Garden/#types.equality)

Moral: always use === (triple equal)

Canvas

Resources

General JavaScript Resources

The Fine Print

This work is copyright (C) 2010-2012 by Alex Chaffee. All rights reserved. Permission is granted to use this material for non-profit educational purposes, including self-education and open workshops. Use by educational institutions or for-profit classes must be licensed. For permission, please contact Alex Chaffee at alex@stinky.com.




Comments

comments powered by Disqus