1.1 Welcome to the World of JavaScript
Created in 1995 by Brendan Eich in just 10 days at Netscape, JavaScript has evolved from a simple scripting language for adding basic interactive elements to websites into the world's most ubiquitous programming language.
The TC39 Process
Technical Committee 39 (TC39) is the governing body responsible for evolving ECMAScript standards. Every new language feature progresses through 5 strict stages:
Stage 0 (Strawman) -> Stage 1 (Proposal) -> Stage 2 (Draft) -> Stage 3 (Candidate - specified & tested) -> Stage 4 (Finished - included in the next yearly standard release).
1.2 Setting Up the Developer Environment
To write professional JavaScript, you need modern tooling. Today's JavaScript ecosystem spans multiple runtimes beyond the browser:
# Check Node.js version
node -v
# Output: v22.x.x
# Check Bun (Ultra-fast modern runtime & package manager)
bun -v
# Output: 1.x.x
# Check Deno (Secure default runtime)
deno --versionEssential Developer Tools
Modern browsers (Chrome, Firefox, Safari, Edge) come built-in with DevTools. Key panels you will use daily include:
1. Console: Execute JS expressions directly. 2. Sources: Set breakpoints, inspect scope variables, and pause execution. 3. Network: Inspect HTTP/WebSocket requests, payloads, and latency. 4. Memory: Take heap snapshots to detect memory leaks.
1.3 How JavaScript Executes Under the Hood
JavaScript is an interpreted, Just-In-Time (JIT) compiled, single-threaded language. Engines like Chrome's V8, Safari's JavaScriptCore, and Firefox's SpiderMonkey transform raw text into optimized machine code.
V8 optimizes code assuming function arguments maintain consistent hidden classes (shapes). Passing different data types to hot functions forces TurboFan to deoptimize machine code back to bytecode, slowing down execution!