उदाहरण के लिए मेरे पास इस तरह की एक वस्तु है:

const a = {
 b: "value"
 // and also what about: c: '', or c: 0, c: false ?
};

और मैं अपने ऑब्जेक्ट के लिए एक 'c' कुंजी असाइन करना चाहता हूं, लेकिन केवल तभी जब इसे पहले असाइन नहीं किया गया हो।

आमतौर पर हम कुछ ऐसा करते हैं:

if (!a.c) {
  a.c = 1; // or without { } for a bit shorty way.
}

लेकिन ES12 मानक कुछ अधिक नए नलिश कोलेसिंग और लॉजिकल ऑपरेटरों का परिचय देते हैं, तो क्या कोई मुझे बता सकता है कि यह ऊपर दिए गए उदाहरण को बदलने में मेरी मदद कैसे करता है और null और 0 के बारे में एक संख्या व्यवहार के रूप में क्या है (खाली) स्ट्रिंग और false व्यवहार भी एक प्लस है)?

इसके पीछे असली सवाल इस बारे में है: क्या इस नई सुविधा का उपयोग वास्तव में सभी मामलों को कवर कर सकता है और वास्तविक उत्पादन परियोजनाओं में उपरोक्त उदाहरण को प्रतिस्थापित कर सकता है, या क्या यह अभी भी अधिक पारंपरिक तरीके से रहना बेहतर है। (बेशक, यह सब सिंटैक्स चीनी कर्मचारियों के बारे में है, लेकिन मैं कवरेज के बारे में अधिक जानना चाहता हूं)

1
AlexZeDim 22 नवम्बर 2021, 12:10
क्या आप शून्य को बदलना चाहते हैं?
 – 
Nina Scholz
22 नवम्बर 2021, 12:12
2
क्या आपका मतलब if (!a.c) नहीं है?
 – 
C.Champagne
22 नवम्बर 2021, 12:13
नमस्ते @NinaScholz, मैं अपने अन्य सवालों के जवाब देकर आपको याद करता हूं। सच कहूं, तो मैं चाहूंगा कि शून्य और null मामले भी कवर किए जाएं।
 – 
AlexZeDim
22 नवम्बर 2021, 12:14
1
और false और खाली स्ट्रिंग... आदि के बारे में क्या?
 – 
trincot
22 नवम्बर 2021, 12:14
@ सी। शैम्पेन, हाँ, तुम सही हो यह मेरी गलती थी
 – 
AlexZeDim
22 नवम्बर 2021, 12:15

1 उत्तर

सबसे बढ़िया उत्तर

लॉजिकल नलिश असाइनमेंट ??= मान तभी निर्दिष्ट करता है जब बाईं ओर का मान या तो undefined या null हो।

a.c ??= 1;

अगर आप कोई गलत मान बदलना चाहते हैं, जैसे '', 0, false, null, undefined, आप तार्किक या असाइनमेंट ||=

a.c ||= 1;
4
Nina Scholz 22 नवम्बर 2021, 12:15