Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

क्या JavaScript में नल कोलेसिंग ऑपरेटर है?

हां, JavaScript (ES2020) में नल कोलेसिंग ऑपरेटर ?? है। यह केवल null या undefined के लिए डिफ़ॉल्ट मान प्रदान करता है, अन्य फाल्सी मानों (0, "", false) के लिए नहीं।

सिंटैक्स

const value = possiblyNull ?? defaultValue;

?? बनाम || तुलना

const testValues = [null, undefined, 0, "", false, NaN, "hello", 42];

testValues.forEach(val => {
    console.log(`${String(val).padEnd(10)} || 'default' = ${val || 'default'}`);
    console.log(`${String(val).padEnd(10)} ?? 'default' = ${val ?? 'default'}`);
    console.log('---');
});

/* आउटपुट:
null        || 'default' = default   ?? 'default' = default
undefined   || 'default' = default   ?? 'default' = default
0           || 'default' = default   ?? 'default' = 0
""          || 'default' = default   ?? 'default' = ""
false       || 'default' = default   ?? 'default' = false
NaN         || 'default' = default   ?? 'default' = NaN
hello       || 'default' = hello     ?? 'default' = hello
42          || 'default' = 42        ?? 'default' = 42
*/

व्यावहारिक उदाहरण

function configure(options = {}) {
    // ?? से केवल null/undefined पर डिफ़ॉल्ट
    const port = options.port ?? 3000;
    const host = options.host ?? 'localhost';
    const debug = options.debug ?? false;  // false बरकरार रहता है!
    const timeout = options.timeout ?? 5000;
    
    // || होता तो debug: false → true हो जाता (बग!)
    // const debug = options.debug || true; // गलत!
    
    return { port, host, debug, timeout };
}

console.log(configure({}));                    // सभी डिफ़ॉल्ट
console.log(configure({ port: 8080 }));        // पोर्ट ओवरराइड
console.log(configure({ debug: false }));      // false बरकरार!
console.log(configure({ timeout: 0 }));        // 0 बरकरार! (कोई टाइमआउट नहीं)

चेनिंग

const value = firstChoice ?? secondChoice ?? thirdChoice ?? 'finalDefault';

// पुराना तरीका (बग-प्रवण)
const value = firstChoice || secondChoice || thirdChoice || 'finalDefault';

ब्राउज़र सपोर्ट

पर्यावरणसपोर्ट
Chrome 80+✅
Firefox 72+✅
Safari 13.1+✅
Edge 80+✅
Node.js 14+✅
IE❌

चलाने का तरीका

node nullish-coalescing.js

आउटपुट

The full name is=null
The full name is=David Miller

सिफारिश

आधुनिक JavaScript में हमेशा ?? उपयोग करें जब आप केवल null/undefined के लिए डिफ़ॉल्ट चाहते हैं। || केवल तभी उपयोग करें जब सभी फाल्सी मानों के लिए डिफ़ॉल्ट चाहिए।

  1. JavaScript स्प्रेड ऑपरेटर JavaScript स्प्रेड ऑपरेटर

    JavaScript स्प्रेड ऑपरेटर हमें एक ऐरे को व्यक्तिगत ऐरे एलिमेंट्स में विस्तारित करने की अनुमति देता है। स्प्रेड ऑपरेटर का उपयोग करने के लिए तीन डॉट्स (...) को ऐरे नाम से पहले लगाया जाना चाहिए।उदाहरण<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"

  1. - Kotlin में डबल-बैंग (!!) ऑपरेटर क्या है?

    परिचय `!!` ऑपरेटर (नॉट-नल असर्शन ऑपरेटर) किसी भी nullable मान को non-null में बदलता है। यदि मान `null` है, तो `NullPointerException` फेंकता है। उदाहरण 1: बिना !! के fun main() { var name: String? = null println(name) // null प्रिंट करता है, कोई क्रैश नहीं } आउटपुट null उदाहरण 2: !! के सा

  1. - C# में नल कोलेसिंग ऑपरेटर (??) का उपयोग कैसे करें

    नल कोलेसिंग ऑपरेटर का उपयोग नल करने योग्य वैल्यू टाइप्स और रेफरेंस टाइप्स के साथ किया जाता है। इसका उपयोग एक ऑपरेंड को दूसरे नल करने योग्य (या नहीं) वैल्यू टाइप ऑपरेंड के टाइप में कन्वर्ट करने के लिए किया जाता है, जहां एक इम्प्लिसिट कन्वर्जन संभव है। यदि पहले ऑपरेंड का मान नल है, तो ऑपरेटर दूसरे ऑपर