Dynamic Typing
Variables do not need a fixed type, and their type can even change while the code is running.
JavaScript is a high-level, interpreted, dynamically typed programming language. This simply means it is mainly used to build interactive and dynamic web applications, the code is read and run directly (not built into a separate program first), and you do not need to fix the type of your data ahead of time. It runs inside the browser, but it is also widely used on servers, through tools like Node.js.
Unlike languages that need to be compiled first, JavaScript runs directly in the browser with the help of a JavaScript Engine (like V8 in Chrome). This engine reads and runs your code line by line.
JavaScript follows a single-threaded, event-driven architecture, which means it can only do one thing at a time, but it uses something called an event loop to handle tasks that take time (asynchronous operations) without getting stuck.
Dynamic Typing
Variables do not need a fixed type, and their type can even change while the code is running.
First-Class Functions
Functions can be stored in variables, passed into other functions, and even returned out of other functions.
Prototype-Based OOP
Objects inherit features from other objects using something called prototypes, instead of using traditional classes like in some other languages.
Event-Driven
JavaScript reacts to things the user does, like clicking, typing, or getting a response from the network.
Frontend
Used inside browsers to change what the user sees, using the DOM, events, and other browser tools.
Backend (Node.js)
JavaScript that runs on the server, used for building APIs, talking to databases, and running services.
Frameworks & Libraries
Tools like React, Vue, and Angular help you build bigger, more organized applications.
Tooling
Bundlers (like Webpack and Vite), transpilers (like Babel), and linters (like ESLint) help support your workflow.
Variables & Data Types
Understanding var, let, const, and the difference between primitive and reference types.
Operators & Expressions Arithmetic, logical, comparison, and assignment operations.
Control Flow
Conditional statements (if, switch) and loops (for, while).
Functions Function declarations, function expressions, arrow functions, and closures.
Objects & Arrays The core data structures that JavaScript is built around.
DOM Manipulation Interacting with HTML elements and changing them dynamically.
Events Handling things the user does, like clicks, typing, and keyboard presses.
Asynchronous JavaScript Callbacks, Promises, and async/await.
Prototypes & Object-Oriented Programming Understanding prototypes, inheritance, and the basics of OOP.
ES6+ Features Modern syntax like destructuring, the spread operator, and modules.
Unexpected JavaScript Behavior A deeper look at surprising things JavaScript does, and how to avoid bugs because of them in real projects.
Here, the code runs one line after another, and each line has to finish before the next one can start (this is called blocking).
Here, the code does not wait around for slow tasks to finish. It keeps moving (this is called non-blocking), using things like callbacks and promises.