JavaScript Functions

📚 Lesson 6 of 22  •  ⏱ 11 min read  •  Beginner

Function Declaration

JavaScript
function greet(name) {
  return `Hello, ${name}!`;
}

console.log(greet("Mohan"));  // "Hello, Mohan!"

// Declarations are hoisted — you can call them before they're defined
sayHi();  // works!
function sayHi() { console.log("Hi!"); }

Function Expression

JavaScript
const greet = function(name) {
  return `Hello, ${name}!`;
};

// NOT hoisted — must be defined before calling
greet("Priya");  // works

Default Parameters

JavaScript
function createUser(name, role = "student", active = true) {
  return { name, role, active };
}

createUser("Ravi");             // {name:"Ravi", role:"student", active:true}
createUser("Admin", "admin");  // {name:"Admin", role:"admin", active:true}

Rest Parameters

JavaScript
// ...rest collects remaining arguments into an array
function sum(...numbers) {
  return numbers.reduce((total, n) => total + n, 0);
}

sum(1, 2);          // 3
sum(1, 2, 3, 4);    // 10
sum(10, 20, 30);    // 60

Multiple Returns

JavaScript
function divide(a, b) {
  if (b === 0) return null;  // early return
  return a / b;
}

// Return multiple values via object or array
function getMinMax(arr) {
  return {
    min: Math.min(...arr),
    max: Math.max(...arr)
  };
}

const { min, max } = getMinMax([3, 1, 7, 2]);
// min = 1, max = 7

Pure Functions

JavaScript
// Pure: same input → same output, no side effects
function add(a, b) { return a + b; }  // pure ✓

// Impure: modifies external state
let total = 0;
function addToTotal(n) { total += n; } // impure — side effect

// Prefer pure functions — easier to test and reason about