Variables

Data Types
all data types are object.
Primitive data types Difference between null and undefined
undefined: means a variable has been declared but has not yet been assigned a value. undefined is a type
null: an assignment value (no value) null is an object.

var, let, const

Difference between == and ===

strict mode
Strict mode is a way to introduce better error-checking into your code. When you use strict mode, you cannot, for example, use implicitly declared variables
Declare: "use strict";
Benefits: easier debug, prevent accidentally global etc.

NaN
The NaN property represents a value that is "not a number".
NaN has type Number.

Closure
closure is an inner function that has access to the outer function's variables-scope chain.
The closure has three scope chains: Why use closure: to give objects data privacy, use the outer function as a factory for creating functions that are somehow related, achieve private methods.

Unit Test
Sinon   [View Official Website]
Standalone test spies, stubs and mocks for JavaScript.