मैं बस jQuery के कोड से जा रहा था और फ़ंक्शन विलय में आया था। मैं इस समारोह के कोड की जाँच की:jQuery मर्ज फ़ंक्शन में स्थिति अगर परेशान हो रहा है
merge: function(first, second) {
var len = +second.length,
j = 0,
i = first.length;
while (j < len) {
first[ i++ ] = second[ j++ ];
}
// Support: IE<9
// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
if (len !== len) {
while (second[j] !== undefined) {
first[ i++ ] = second[ j++ ];
}
}
first.length = i;
return first;
},
अब अगर आप कोड के माध्यम से जाना, आप निम्न if
जांच भर में आ जाएगा:
if (len !== len)
यह किसी भी तरह से मेरे लिए कोई मतलब नहीं है, यह जांच वास्तव में क्या है, और यह क्या कर रहा है? तो क्यों किसी को अगर len !== len
की जाँच करेगा
var len = +second.length;
:
len
स्पष्ट रूप से तो जैसे ऊपर कुछ पंक्तियां परिभाषित किया गया है,? यह किसी भी तरह से मुझे समझ में नहीं आता है। क्या कोई समझा सकता है?
यह समझदार नहीं दिखता है लेकिन जाहिर है 'NaN! == NaN // true'। मुझसे मत पूछो क्यों ... 'isNaN (लेन) 'मेरे लिए अधिक तार्किक लग रहा है। – Jonathan
@ जोनाथन एनएएनएन 'नंबर नहीं' (स्ट्रिंग, बूलियन ...) के लिए चेक करें, 'लेन! == लेन' 'NaN' मान – Hacketo
के लिए चेक करें, अंतर को इंगित करने के लिए धन्यवाद। मैं सोच रहा हूं कि 'NaN! == NaN' जेएस में सबसे ज्यादा wtf है जिसे मैंने कभी देखा है। – Jonathan