- Environment
- Script Tag
- Link External File
- Browser Console
- Node JS
- Fundaments
- Variables
- Declare
- var
- let
- const
- Assign
- Scope
- Global
- Function
- Block
- Hoisting
- Declare
- Data Types
- Primitive
- undefined
- boolean
- number
- bigint
- string
- symbol
- null
- object
- function
- Non-Primitive
- class
- struct
- Data Structures
- arrays
- map / weak map
- set / weak set
- date
- Primitive
- Type Conversion
- explicit
- implicit
- Operators
- Equality (==, ===)
- Assignment
- Arithmetic
- Logical
- Conditional
- Comparison
- Relational
- Bitwise
- String
- Comma
- Unary
- Conditional Statements
- if, if...else, if...else...if
- switch
- try/catch/throw/finally
- Repeating Statements
- while
- do...while
- for
- break
- continue
- for...in
- for...of
- Functions
- Declaration
- Expression
- Calling
- Parameters & Arguments
- Scope
- Arrow Function
- Variables
- Advanced
- Advanced Scope
- Nested Functions
- Lexical Scoping
- IIFE
- Revealing Module Pattern
- Closure
- Currying
- this
- implicit binding
- explicit binding
- new binding
- lexical binding
- default binding
- Prototype
- Inheritance
- Class
- Iterators
- Generators
- Event Loop
- Async
- setTimeout
- setInterval
- callbacks
- promises
- async await
- Module System
- cjs
- esm
- import / export
- default and named exports
- Advanced Scope
- Web APIs
- DOM
- XHR & Fetch
- Storage
- Video & Audio
- Drawing Graphics
- Tooling & Misc
- Linters (eslint)
- Code Formatters (prettier)
- Bundlers (webpack)
- TypeScript