The language of the web — and now of servers, mobile apps, desktops, and even microcontrollers. Born in 10 days, JavaScript ate the world.
← Back to Client Side// Modern JS — arrow functions, destructuring, async/await const greet = (name) => `Hello, ${name}!`; async function loadUsers() { const res = await fetch("/api/users"); const data = await res.json(); return data.filter(({ active }) => active); } // Classes are syntactic sugar over prototypes class Customer { constructor(name, age) { this.name = name; this.age = age; } isAdult() { return this.age >= 18; } }
JavaScript runs one thing at a time. The runtime queues async work (timers, IO, promise resolutions) and the event loop pulls them onto the stack when it's idle. Block the loop and the whole app freezes — never run heavy CPU work in the main thread.
A Promise represents a value that will exist in the future. async/await is syntactic sugar that lets you write asynchronous code as if it were synchronous.
Two systems coexist: ESM (import/export, the standard) and CommonJS (require, legacy Node). Modern code uses ESM; tooling bridges the two.
| Category | Tools |
|---|---|
| Package managers | npm, pnpm, yarn, bun |
| Bundlers | Vite, Webpack, esbuild, Rollup, Parcel |
| Transpilers | Babel, SWC, TypeScript |
| Test | Jest, Vitest, Playwright, Cypress, Mocha |
| Lint / format | ESLint, Prettier, Biome |
React, Vue, Angular, Svelte, Solid, Qwik.
Next.js, Nuxt, SvelteKit, Remix, Astro.
Express, Fastify, NestJS, Hono, Koa.
React Native, Expo, Electron, Tauri.
"0" == false) bite beginners.The default — SPA, SSR, static, edge.
Chat, dashboards, websockets — Node.js excels.
React Native shares code with web teams.
Cloudflare Workers, Vercel Edge — JS at the edge of the network.