JavaScript Beginner
The language of the web — runs in every browser, no setup required.
Table of Contents
Output & Comments
JavaScript runs inside the browser. Use console.log() to print output to the developer console (open it with F12), or alert() to show a pop-up.
// Single-line comment /* Multi-line comment spanning multiple lines */ console.log("Hello, World!") // → printed in the console alert("Hello from a popup!") // → browser dialog box // Output multiple values at once console.log("Name:", "Alice", "Age:", 25)
Variables & Data Types
JavaScript has three ways to declare variables: let (reassignable), const (constant), and the older var (avoid in modern code). Types are determined at runtime.
let name = "Alice" // String — can be reassigned const age = 25 // Number — constant let active = true // Boolean let score = null // null (no value yet) // Check type at runtime console.log(typeof name) // "string" console.log(typeof age) // "number" console.log(typeof active) // "boolean" // Reassign let (const would throw an error) name = "Bob" console.log(name) // "Bob"
Operators
JavaScript operators work similarly to other languages. Pay attention to == vs === — always prefer strict equality (===) to avoid unexpected type coercion.
// Arithmetic console.log(10 + 3) // 13 — addition console.log(10 - 3) // 7 — subtraction console.log(10 * 3) // 30 — multiplication console.log(10 / 3) // 3.333… console.log(10 % 3) // 1 — modulo console.log(2 ** 8) // 256 — exponent // Loose vs strict equality console.log(5 == "5") // true ← type coercion! console.log(5 === "5") // false ← always use this console.log(5 !== 3) // true // Logical console.log(true && false) // false — AND console.log(true || false) // true — OR console.log(!true) // false — NOT
=== and !== in JavaScript. The loose operators (==, !=) perform type coercion which leads to subtle bugs.
Strings & Template Literals
Strings can be written with single quotes, double quotes, or backticks. Backtick strings (template literals) let you embed expressions with ${ } and span multiple lines.
const s = " Hello, JavaScript! " console.log(s.trim()) // "Hello, JavaScript!" console.log(s.toLowerCase()) // " hello, javascript! " console.log(s.toUpperCase()) // " HELLO, JAVASCRIPT! " console.log(s.includes("Java")) // true console.log(s.replace("JavaScript", "World")) // Slicing const word = "JavaScript" console.log(word.slice(0, 4)) // "Java" console.log(word.slice(-6)) // "Script" console.log(word.length) // 10 // Template literals (backticks) const name = "Alice" const age = 25 console.log(`Name: ${name}, Age: ${age}`) // Multi-line string const msg = `Line one Line two Line three` console.log(msg)
Conditionals
JavaScript supports if / else if / else, the ternary operator, and switch for multi-branch logic.
const score = 72 if (score >= 90) { console.log("Grade: A") } else if (score >= 75) { console.log("Grade: B") } else if (score >= 60) { console.log("Grade: C") // ← this runs } else { console.log("Grade: F") } // Ternary operator const status = score >= 60 ? "Pass" : "Fail" console.log(status) // "Pass" // switch statement const day = "Monday" switch (day) { case "Saturday": case "Sunday": console.log("Weekend!"); break default: console.log("Weekday") // ← this runs }
Loops
JavaScript offers for, while, for...of (iterating values) and for...in (iterating object keys).
// Classic for loop for (let i = 0; i < 5; i++) { console.log(i) // 0 1 2 3 4 } // for...of — iterate array values const fruits = ["apple", "banana", "cherry"] for (const fruit of fruits) { console.log(`I like ${fruit}`) } // while loop let count = 0 while (count < 3) { console.log(`count = ${count}`) count++ } // break and continue for (let n = 0; n < 10; n++) { if (n === 3) continue // skip 3 if (n === 6) break // stop at 6 console.log(n) // 0 1 2 4 5 }
Arrays & Objects
Arrays store ordered lists of values. Objects store key-value pairs and are the backbone of JavaScript data structures.
// ── Arrays ────────────────────────────── const nums = [10, 20, 30, 40] nums.push(50) // add to end → [10,20,30,40,50] nums.pop() // remove last → [10,20,30,40] nums.splice(1, 1) // remove index 1 → [10,30,40] console.log(nums.length) // 3 // Array methods const squares = [1, 2, 3, 4, 5].map(x => x ** 2) console.log(squares) // [1, 4, 9, 16, 25] const evens = squares.filter(x => x % 2 === 0) console.log(evens) // [4, 16] // ── Objects ───────────────────────────── const person = { name: "Alice", age: 25, active: true } console.log(person.name) // "Alice" console.log(person["age"]) // 25 person.city = "Udine" // add new property // Destructuring const { name, age } = person console.log(`${name} is ${age}`) // "Alice is 25"
Functions
JavaScript has three common ways to define functions: function declarations, function expressions, and the modern arrow functions (=>).
// ── Function declaration ───────────────── function greet(name = "stranger") { return `Hello, ${name}!` } console.log(greet()) // "Hello, stranger!" console.log(greet("Alice")) // "Hello, Alice!" // ── Arrow function ─────────────────────── const square = (x) => x ** 2 console.log(square(7)) // 49 // Arrow with a block body (multiple statements) const minMax = (arr) => { const lo = Math.min(...arr) const hi = Math.max(...arr) return { lo, hi } } console.log(minMax([3, 1, 9, 4])) // { lo: 1, hi: 9 } // ── Callback example ──────────────────── [1, 2, 3].forEach(n => console.log(n * 10)) // 10 20 30