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
andconst
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
andreduce
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 correctthis
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