यदि आप यहाँ jQuery inArray
पृष्ठ पर टिप्पणियाँ पढ़ते हैं , तो एक दिलचस्प घोषणा है:
!!~jQuery.inArray(elm, arr)
अब, मेरा मानना है कि डबल-विस्मयादिबोधक बिंदु परिणाम को प्रकार में बदल देगा boolean
, के मूल्य के साथ true
। मुझे समझ में नहीं आ रहा है कि ~
इस सब में टिल्ड ( ) ऑपरेटर का क्या उपयोग है ?
var arr = ["one", "two", "three"];
if (jQuery.inArray("one", arr) > -1) { alert("Found"); }
if
बयान का खंडन:
if (!!~jQuery.inArray("one", arr)) { alert("Found"); }
टूट - फूट:
jQuery.inArray("one", arr) // 0
~jQuery.inArray("one", arr) // -1 (why?)
!~jQuery.inArray("one", arr) // false
!!~jQuery.inArray("one", arr) // true
मैंने यह भी देखा कि अगर मैंने टिल्ड को सामने रखा, तो इसका परिणाम है -2
।
~!!~jQuery.inArray("one", arr) // -2
मैं यहाँ टिल्ड के उद्देश्य को नहीं समझता। क्या कोई इसे समझा सकता है या मुझे किसी संसाधन की ओर संकेत कर सकता है?
~jQuery.inArray()
वास्तव में बहुत उपयोगी है - संभवतः यहां तक कि एक बहुत अच्छा कारण है कि खोज फ़ंक्शन -1
विफलता के लिए वापस लौटते हैं (एकमात्र मूल्य जिसका दो का पूरक गलत है)। एक बार जब आप चाल देख चुके हैं और समझ गए हैं, तो मुझे लगता है कि यह उससे भी अधिक पठनीय है != -1
।
!!~
लिए बचाव कर रहे हैं ।
if (x != -1)
और if (~x)
मेरे बीच मुख्य अंतर यह है कि पूर्व वास्तव में व्यक्त करता है कि आप क्या करने का इरादा रखते हैं। उत्तरार्द्ध आपको पूरी तरह से कुछ और करने की इच्छा व्यक्त करता है ("कृपया मेरे 64-बिट नंबर को 32-बिट पूर्णांक में परिवर्तित करें, और जांचें कि क्या बिटवाइस का पूर्णांक सत्य नहीं है"), जहां आप सिर्फ वांछित परिणाम प्राप्त करने के लिए होते हैं। एक मामला।