JS नलिश कोलेसिंग
In this page:
const result = value ?? defaultValue; // only for null or undefined
Basic Nullish Coalescing
?? operator अपनी दाईं तरफ की value सिर्फ तभी return करता है जब बाईं तरफ ठीक null या undefined हो, 0 या खाली string जैसी दूसरी falsy values को अनछुआ छोड़ते हुए। इसे खासतौर पर ||-based defaults की एक आम bug ठीक करने के लिए जोड़ा गया था।
उदाहरण: Basic Nullish Coalescing
const value = null ?? "default";
console.log(value);
Nullish बनाम OR
|| के उलट, जो किसी भी falsy value पर fallback होता है, ?? सिर्फ null/undefined पर fallback होता है। यह तब मायने रखता है जब 0, NaN, या '' असली values हों जिन्हें आप चुपचाप किसी default से बदलना नहीं चाहते।
उदाहरण: Nullish vs OR
console.log(0 || "fallback"); // "fallback" - || treats 0 as falsy
console.log(0 ?? "fallback"); // 0 - ?? only checks null/undefined
False और खाली Strings
false, 0, और '' falsy हैं पर nullish नहीं, इसलिए ?? इन्हें valid values मानता है और fallback नहीं होता। यह ठीक वही स्थिति है जहाँ || गड़बड़ करता था और इसे ठीक करने के लिए ?? लाया गया।
उदाहरण: False and Empty Strings
console.log(false ?? "x"); // false
console.log(0 ?? "x"); // 0
console.log("" ?? "x"); // ""
Objects के साथ
जब बाईं तरफ किसी object से पढ़ी गई property हो, तो ?? वैसे ही काम करता है, जो इसे optional config fields पढ़ने के लिए एक स्वाभाविक विकल्प बनाता है, बिना जानबूझकर रखी गई falsy values को गलती से override किए।
उदाहरण: With Objects
const config = { timeout: 0 };
console.log(config.timeout ?? 5000); // 0, a real intentional value
Optional Chaining के साथ
?? और ?. (optional chaining) को अक्सर साथ मिलाया जाता है: किसी शायद-गायब object में safely chain करें, फिर सिर्फ तभी एक default दें जब आखिरी result null या undefined हो।
उदाहरण: With Optional Chaining
const user = { address: null };
console.log(user?.address?.city ?? "Unknown");
- defaults के लिए
||इस्तेमाल करना, इसलिए0,""औरfalsereplace हो जाते हैं;??सिर्फnullऔरundefinedreplace करता है। - बिना parentheses के
??को||या&&के साथ मिलाना, जो एकSyntaxErrorहै। - यह उम्मीद करना कि
??undefinedऔर empty strings को same मानेगा, जबकि"" ?? "x"""return करता है।
Chapter Quiz — Complete all 12 topics to unlock
0/12 topics done
Complete these topics first: