Subjects

All subjects Django Java Python React Spring Boot JavaScript PHP
Sign Up Free
Question 8 of 10 · ES6+ Features
Interview question

How do default parameters work in ES6 functions? ES6 functions में default parameters कैसे काम करते हैं?

Answer

Default parameters let you specify fallback values for function arguments when they're not passed or passed as undefined, eliminating manual checks that were common before ES6.

// Old way - manual default value checks
function greetOld(name) {
    name = name || 'Guest'; // works, but has issues with falsy values like ''
    return `Hello, ${name}`;
}

// ES6 default parameters
function greet(name = 'Guest') {
    return `Hello, ${name}`;
}
console.log(greet());        // Hello, Guest
console.log(greet('John'));  // Hello, John
console.log(greet(undefined)); // Hello, Guest - undefined triggers default
console.log(greet(''));      // Hello, - empty string is a valid value, NOT replaced
console.log(greet(null));    // Hello, null - null is also NOT replaced (unlike ||)

// Defaults can reference earlier parameters
function createUser(name, greeting = `Hello, ${name}`) {
    return greeting;
}
console.log(createUser('John')); // Hello, John

// Defaults can be function calls, evaluated each time the default is needed
function getDefaultRole() {
    return 'guest';
}
function addUser(name, role = getDefaultRole()) {
    console.log(`${name}: ${role}`);
}
addUser('John'); // John: guest

// Combining with destructuring
function createConfig({ theme = 'light', fontSize = 14 } = {}) {
    return { theme, fontSize };
}
console.log(createConfig()); // { theme: 'light', fontSize: 14 }
console.log(createConfig({ theme: 'dark' })); // { theme: 'dark', fontSize: 14 }

// Parameters before a default one must still be provided or explicitly undefined
function example(a, b = 10, c) {
    console.log(a, b, c);
}
example(1, undefined, 3); // 1 10 3 - must pass undefined to skip 'b'

Default parameters function arguments के लिए fallback values देते हैं जब वो pass नहीं होते या undefined pass होते हैं, ES6 से पहले के manual checks को खत्म करते हैं।

// पुराना तरीका
function greetOld(name) {
    name = name || 'Guest'; // '' जैसी falsy values में issue
    return `Hello, ${name}`;
}

// ES6 default parameters
function greet(name = 'Guest') {
    return `Hello, ${name}`;
}
console.log(greet());          // Hello, Guest
console.log(greet('John'));    // Hello, John
console.log(greet(undefined)); // Hello, Guest
console.log(greet(''));        // Hello, - खाली string valid है, replace नहीं होगी
console.log(greet(null));      // Hello, null

// पहले के parameters को reference कर सकते हैं
function createUser(name, greeting = `Hello, ${name}`) {
    return greeting;
}
console.log(createUser('John')); // Hello, John

// Default function calls हो सकते हैं
function getDefaultRole() { return 'guest'; }
function addUser(name, role = getDefaultRole()) {
    console.log(`${name}: ${role}`);
}
addUser('John'); // John: guest

// Destructuring के साथ combine
function createConfig({ theme = 'light', fontSize = 14 } = {}) {
    return { theme, fontSize };
}
console.log(createConfig()); // { theme: 'light', fontSize: 14 }

Was this answer clear?