1. Getting Started

Module 1 - The JavaScript Engine, Objectives

By the end of this module, a student should be able to:

  • Explain the history and usefulness of JavaScript, and why we're learning it in particular vs. other languages
  • Explain the order the JS engine evaluates LHS and RHS lookups
  • Define asynchronous vs. synchronous
  • Explain and utilize callbacks (and other various async implementations)
  • Describe and implement a stack data-structure
  • Describe and implement a queue data-structure
  • Explain the stack, queue and event loop in the JS engine
  • Explain how the stack, queue and event loop works in NodeJS
  • Explain the difference between ES5, ES6, TypeScript and why they matter.
  • Explain and evaluate what loosely typed and dynamic means.
  • Define all the data-types in JavaScript.
  • Explain what JavaScript's built-in objects are.
  • Define what immutable and mutable data types are.
  • Utilize var, let and const in the correct context.
  • Identify which types/values are truthy/falsey.
  • Write and utilize all the logical operators.
  • Write and utilize all comparison operators.
  • Explain the difference between == and ===
  • Explain how functions are objects
  • How to invoke functions
  • Identify the difference between function expressions and function declarations and why it matters
  • Explain What return does
  • Utilize some of the basic built-in objects and their methods to solve problems
  • Define and identify scopes and how they're created
  • Identify and explain what a closure is and why it's useful
  • Utilize closures to create modules
  • Utilize the forEach, map, filter, find, every, some and reduce helper methods.
  • Declare objects using the object literal, object constructor and Object.create syntax
  • Set and get object properties
  • Identify the nuances of duplicating objects
  • Iterating over objects
  • Define how this works
  • Define and utilize bind
  • Use JavaScript arrow functions
  • Explain the difference between class inheritance and prototypical inheritance and its impact on JavaScript
  • Define and utilize prototypes in JavaScript
  • Define and utilize the new keyword
  • Explain why new might be considered old and outdated
  • Utilize call to set the correct this context
  • Mimic classes in JavaScript, though it's not suggested
  • Identify and utilize ES6 classes and subclasses
  • Explain why many developers see Object Oriented JavaScript as a bad thing
  • Utilize prototypes to delegate behavior between objects
  • Explain why immutability is important in functional programming
  • Explain one way to create immutable data Structures
Complete and Continue