- Introduction to JavaScript
- How JavaScript Works
- Linking JavaScript to HTML
- JavaScript Syntax
- Comments in JavaScript
- Variables (var, let, const)
- Data Types (String, Number, Boolean, Null, Undefined, Symbol, BigInt)
- typeof Operator
- Type Conversion and Type Coercion
- Operators (Arithmetic, Assignment, Comparison, Logical, Bitwise)
- Pre/Post Increment & Decrement
- Ternary Operator
- String Methods and Properties
- Template Literals
- Numbers and Math Object
- Date and Time
- Alerts (alert, prompt, confirm)
- Input and Output
- Conditional Statements (if, else, else if, switch)
- Loops (for, while, do...while)
- break and continue
- for...in loop
- for...of loop
- Function Declaration
- Function Expression
- Arrow Functions
- Parameters and Arguments
- Return Statement
- Function Scope and Block Scope
- Default Parameters
- Rest Parameters
- Callback Functions
- Higher Order Functions
- Immediately Invoked Function Expression (IIFE)
- Recursion
- Introduction to Arrays
- Array Indexing and Length
- Looping through Arrays
- Array Methods (push, pop, shift, unshift)
- splice(), slice(), concat()
- indexOf(), lastIndexOf()
- includes(), find(), findIndex()
- map(), filter(), reduce()
- sort(), reverse(), every(), some(), flat()
- Creating Objects
- Object Properties and Methods
- Dot and Bracket Notation
- Nested Objects
- Object Destructuring
- Object.assign(), Object.keys(), Object.values(), Object.entries()
- Optional Chaining
- this Keyword
- Constructor Functions
- Object.create()
- Closures
- Scope Chain
- Lexical Environment
- Execution Context
- Call Stack
- Hoisting
- Strict Mode
- bind(), call(), apply()
- Currying
- Memoization
- Debounce and Throttle
- Pure and Impure Functions
- ES6 Classes
- Constructor Method
- Class Inheritance (extends, super)
- Getters and Setters
- Static Methods
- Private and Public Properties
- Prototype and Prototypal Inheritance
- Synchronous vs Asynchronous
- Callbacks
- Callback Hell
- Promises
- Promise Methods (then, catch, finally)
- Async and Await
- fetch API
- Error Handling in Async/Await
- DOM Introduction
- Selecting Elements (getElementById, querySelector, etc.)
- Changing Text and HTML Content
- Changing Styles and Classes
- Creating and Removing Elements
- Appending and Inserting Elements
- Attributes and Data Attributes
- Event Listeners
- Mouse Events (click, dblclick, mouseover, etc.)
- Keyboard Events
- Form Events
- Event Object
- Event Delegation
- Event Bubbling and Capturing
- Prevent Default Behavior
- window Object
- navigator Object
- screen Object
- location Object
- history Object
- alert, prompt, confirm
- Timers (setTimeout, setInterval, clearInterval)
- let and const
- Template Literals
- Arrow Functions
- Default Parameters
- Rest and Spread Operators
- Destructuring Assignment
- for...of loop
- Enhanced Object Literals
- Modules (import/export)
- Symbols
- Generators
- Sets and Maps
- WeakSet and WeakMap
- Optional Chaining (?.)
- Nullish Coalescing Operator (??)
- Stack
- Queue
- Linked List
- Hash Table
- Tree and Binary Tree
- Graph
- Sorting Algorithms (Bubble, Merge, Quick, etc.)
- Searching Algorithms (Linear, Binary)
- Big O Notation Basics
- Module Pattern
- Factory Pattern
- Singleton Pattern
- Observer Pattern
- Revealing Module Pattern
- Mediator Pattern
- MVC Pattern
- XSS (Cross-Site Scripting)
- CSRF (Cross-Site Request Forgery)
- Content Security Policy
- Input Sanitization
- Secure Storage
- Babel
- Webpack
- Parcel
- Vite
- ESLint
- Prettier
- Source Maps
- Minification and Optimization
- Polyfills and Shims
- Unit Testing
- Integration Testing
- Testing Frameworks (Jest, Mocha, Chai)
- Test-Driven Development (TDD)
- Browser Compatibility
- DOMContentLoaded vs load
- Performance Optimization
- Accessibility (a11y) Practices
- SEO for JavaScript Sites
- React.js (JSX, Hooks, Components)
- Vue.js Basics
- Angular Basics
- State Management (Redux, Context API, Vuex)
- Component Lifecycle
- Routing (React Router, Vue Router)