Learn about ECMAScript evolution and ES6 fundamentals.
- ECMAScript history
- ES5 vs ES6 differences
- Browser compatibility
- Transpilation with Babel
- Module systems
- Strict mode evolution
- Development setup
- Migration strategies
Master modern variable declarations and block scoping.
- Let vs var differences
- Const declarations
- Block scope concept
- Temporal dead zone
- Hoisting behavior
- Loop variable scope
- Best practices
- Performance implications
Understand arrow functions and their lexical 'this' binding.
- Arrow function syntax
- Implicit returns
- Lexical this binding
- Arrow vs regular functions
- Use cases and limitations
- Method definitions
- Event handlers
- Callback simplification
Create dynamic strings with template literals and tagged templates.
- Template literal syntax
- String interpolation
- Multiline strings
- Expression embedding
- Tagged templates
- Raw strings
- HTML templating
- Styled components
Extract values from arrays and objects with destructuring.
- Array destructuring
- Object destructuring
- Default values
- Renaming variables
- Nested destructuring
- Rest patterns
- Function parameters
- Practical applications
Work with spread syntax and rest parameters for flexible code.
- Spread syntax basics
- Array spreading
- Object spreading
- Function call spreading
- Rest parameters
- Rest in destructuring
- Cloning vs reference
- Performance considerations
Use enhanced object syntax for cleaner and more powerful objects.
- Shorthand properties
- Method definitions
- Computed property names
- Getter and setter syntax
- Object method shorthand
- Dynamic property creation
- Object.assign()
- Object composition
Create classes and implement inheritance with modern syntax.
- Class declarations
- Constructor methods
- Instance methods
- Static methods
- Class inheritance
- Super keyword
- Private fields
- Class vs prototype
Organize code with ES6 modules and import/export syntax.
- Module basics
- Named exports
- Default exports
- Import variations
- Re-exporting
- Dynamic imports
- Module bundlers
- Tree shaking
Handle asynchronous operations with promises and async/await.
- Promise fundamentals
- Promise chaining
- Promise.all() and Promise.race()
- Async/await syntax
- Error handling
- Sequential vs parallel
- Promise.allSettled()
- Top-level await
Create custom iterators and use generators for powerful iteration patterns.
- Iterator protocol
- Iterable objects
- For...of loops
- Generator functions
- Yield expressions
- Generator delegation
- Async generators
- Custom iterables
Explore the newest JavaScript features from ES2017 to ES2023.
- Optional chaining (?.)
- Nullish coalescing (??)
- Private class fields
- Logical assignment
- Array.at() method
- Object.hasOwn()
- Top-level await
- Stage 3 proposals