मैं इस विषय पर सह-कार्यकर्ता के साथ लगभग एक सप्ताह तक बहस कर रहा हूं। मैं जहां भी कर सकता हूं, ternaries, आदि का उपयोग कर, shorthand कोड का एक प्रशंसक हूँ। हाल ही में, वह मेरे बारे में डबल विस्मयादिबोधक के उपयोग के बारे में उठा रहा है। कई परीक्षण चलाने के बाद, मैं उनके साथ सहमत होना शुरू कर रहा हूं ... मेरे कोड में उपयोग करने के लिए डबल विस्मयादिबोधक बुद्धिमान नहीं हो सकता है। इस पर विचार करें:जेएस डबल विस्मयादिबोधक - क्या इसका उपयोग करने का कोई अच्छा कारण है?
var myvar = "Hello";
return (!!myvar ? "Var is set" : "Var is not set");
उपरोक्त उदाहरण अपेक्षा के अनुसार काम करता है। हालांकि, अगर हम एक वेरिएबल के खिलाफ जांच कर रहे हैं जो अपरिभाषित हो सकता है, तो हमें एक त्रुटि मिलती है, खासकर आईई 7 में। हम अपने अपेक्षित परिणाम मिलता है, लेकिन, अगर हम अपने कंसोल में इस चलाएँ:
if(randomvar) alert('Works');
इस दृष्टिकोण का उपयोग करना, यदि चर अपरिभाषित है, यह चुपचाप विफल रहता है। इससे मुझे डबल विस्मयादिबोधक के उपयोग पर सवाल उठता है। क्या ऐसी कोई परिस्थिति है जो वास्तव में इस ऑपरेटर को फायदेमंद बनाती है?
की महान स्पष्टीकरण (! वोट दें शब्द "truthiness" प्रयोग करने के लिए), यह भी ध्यान देने योग्य है का उपयोग करना चाहते है कि आप इस तरह इस ऑपरेटर का उपयोग होता है: 'वापसी !! (window.Object && (obj1.function1 || obj.2function2));' यह सभी चीजों पर "रूपांतरण को मजबूर" करता है। convertallthethings.jpeg –