javascript - programs - जावास्क्रिप्ट डाउनलोड




ट्रिपल विस्मयादिबोधक चिह्न का उपयोग (4)

हमारी परियोजनाओं में से एक के स्रोत कोड के माध्यम से देखने पर, मुझे कुछ स्थान मिले हैं जहां हम सशर्त बयानों में तीन विस्मयादिबोधक चिह्नों का उपयोग कर रहे हैं, जैसे:

if (!!!someVar) {
    // ...
}

अब, मैं समझता हूं कि यह किसी तरह का उपयोग किया जाने वाला ऑपरेटर नहीं है, यह एक पंक्ति में सिर्फ तीन !(!(!someVar))) , जैसे !(!(!someVar))) । मुझे समझ नहीं आ रहा है कि इसका क्या उपयोग है - मेरी राय में इसे सुरक्षित रूप से एकल विस्मयबोधक चिह्न से बदला जा सकता है। निम्नलिखित मामलों में मेरी कोशिश होती है कि जब कोई मामला न हो तो !a (गूगल क्रोम कंसोल से सीधे लिया गया) के बराबर नहीं है:

var a = ''
""
!!!a === !a
true
a = 'string'
"string"
!!!a === !a
true
a = null
null
!!!a === !a
true
a = 12
12
!!!a === !a
true
a = {b: 1}
Object {b: 1}
!!!a.c === !a.c // a.c is undefined here
true
a = []
[]
!!!a === !a
true
a = [1,2]
[1, 2]
!!!a === !a
true

क्या मुझे कुछ दुर्लभ (या स्पष्ट) मामला याद आ रहा है?


इसके अलावा, यह exit की तरह है जब आप इसे अपने कंसोल में उपयोग करते हैं।


पहले डबल विस्मयादिबोधक चिह्न एक बूलियन मान के लिए वस्तु के किसी भी मिथ्या मूल्य (अपरिभाषित, अशक्त, 0) या किसी भी सत्य मूल्य पर बदल गया, तो तीसरा इसे नकार देता है।


वहाँ कोई अंतर नहीं है !a और !!!a , चूंकि !!!a बस है !!(!a) और क्योंकि !a एक बुलियन है, !!(!a) सिर्फ इसका दोहरा नकार है, इसलिए वही।


विचार करें:

var x;
console.log(x == false);
console.log(!x, !x == true);
console.log(!!x, !!x == true, !!x == false);  

... कंसोल आउटपुट है:

false 
true true 
false false true

ध्यान दें कि कैसे, भले ही एक्स पहले उपयोग में "गलत" हो, यह झूठ के समान नहीं है।

लेकिन दूसरे उपयोग (x) का वास्तविक बूलियन है - लेकिन यह विपरीत मूल्य है।

तो तीसरा उपयोग (!! x) "फाल्सी" मूल्य को एक सच्चे बूलियन में बदल देता है।

... यह ध्यान में रखते हुए, तीसरा विस्मयादिबोधक बिंदु मूल मूल्य ("असली बूलियन" मान का एक निषेध) का एक TRUE निषेध बनाता है।

ईटीए:

हे भगवान! मुझे विश्वास नहीं हो रहा है कि मैंने ध्यान नहीं दिया कि यह एक ट्रिम्पल विस्मयादिबोधक प्रश्न है! इसके बाद भी यह मुझे विशेष रूप से इंगित किया गया था।

इसलिए, जबकि मेरा उत्तर किसी के लिए उपयोगी है, मुझे उन लोगों से सहमत होना होगा जिन्होंने पोस्ट किया है कि ट्रिपल-एक्सक्लेमेशन कार्यात्मक रूप से एकल के समान है।





javascript