Curriculum
Module 18 // Core JavaScript
Arguments Object & Rest Parameters
Module Objective
arguments object, aliasing behavior, rest syntax, spread operator
Mental Model Realtime Simulation
INTERACTIVE_CANVASEditor_Pane
Loading...
Console_Output
Waiting for output...
Practical Code Examples
// Example 1
// 1. The Power of Rest
function sumAll(...numbers) {
return numbers.reduce((total, n) => total + n, 0);
}
console.log(sumAll(1, 2, 3, 4)); // 10💡 Rest parameters (`...`) gather all remaining arguments into a **real Array**. This allows you to use powerful methods like `.reduce()`, `.map()`, or `.filter()` directly.
// Example 2
// 2. arguments object quirks
function checkArgs() {
console.log(arguments.length); // 2
// arguments.map(x => x); // ❌ Error! (Not an array)
const realArr = Array.from(arguments);
console.log(realArr.map(x => x)); // ✅ Works
}
checkArgs(10, 20);💡 The `arguments` object is **Array-like** (it has a length and indices) but lacks most array methods. It is also not available in **Arrow Functions**.
// Example 3
// 3. Destructuring Arguments
function logUser({ name, age }, ...tags) {
console.log(`User: ${name}, Age: ${age}`);
console.log("Tags:", tags);
}
logUser({ name: "Subhajit", age: 25 }, "js", "web", "viz");💡 You can combine object destructuring with rest parameters to create very clean and flexible function interfaces.
Engine & Memory Architecture
Argument Handling in Memory
1. Stack Allocation:
- Arguments are initially passed via the Call Stack.
- Each value is placed in the function's local execution frame.
2. The arguments Object:
- Is a special object created in the Heap during the Creation Phase of the function's execution context.
- It holds a live reference to the arguments on the stack.
3. Rest Parameters:
- The engine creates a new Array object in the Heap.
- It copies the values from the Stack into this array.
- While slightly more memory-intensive than
arguments, the engine is highly optimized for this common pattern.
4. Performance:
- Accessing
argumentscan sometimes prevent engines (like V8) from performing certain optimizations ("de-optimization") because the object is "magical" and live-linked. Rest parameters are preferred for modern performance.