मैं विशेष रूप से map विधि के लिए, Underscore.js पुस्तकालय के लिए स्रोत कोड देख रहा था (उस पृष्ठ पर लाइन 85, और यहाँ की नकल की चारों ओर):नकारात्मक ऑब्जेक्ट लंबाई जावास्क्रिप्ट या underscore.js में संभव है? जिसका अर्थ है?
_.map = function(obj, iterator, context) {
var results = [];
if (obj == null) return results;
if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
each(obj, function(value, index, list) {
results[results.length] = iterator.call(context, value, index, list);
});
if (obj.length === +obj.length) results.length = obj.length;
return results;
};
पूरी तरह से निम्न पंक्ति
if (obj.length === +obj.length) results.length = obj.length;
के लिए छोड़कर सीधा
अब, मैंने इसका अर्थ यह है कि "यदि वस्तु की लंबाई ऋणात्मक संख्या नहीं है ..."
, यदि मेरी व्याख्या सही है, तो इसका तात्पर्य है कि यह हो सकता है!
तो, प्रिय विशेषज्ञों, वस्तुओं की क्या प्रकार के लिए
obj.length === +obj.length
false
हो सकता है? ===
की मेरी समझ का अर्थ है कि यह false
वापस कर सकता है यदि obj.length
का प्रकार +obj.length
के प्रकार से मेल नहीं खाता है, लेकिन यहां मेरा ज्ञान कम हो जाता है। किस प्रकार की चीजें obj.length
हो सकती हैं? x === +x
किसी प्रकार का सामान्य बेवकूफ परीक्षण है जिसे मैं नहीं जानता? क्या यह किसी विशेष प्रकार के विशेष मामले का जवाब देता है जो underscore.js में गहरा होता है, उदाहरण के लिए, underscore.js कुछ पारंपरिक उद्देश्यों के लिए नकारात्मक ऑब्जेक्ट। लम्बाई असाइन और ट्रैक करता है? मार्गदर्शन और सलाह की सराहना की जाएगी।
ध्यान दें कि 'x x * आवश्यक नहीं * सकारात्मक है - यह केवल 'x' का संख्यात्मक मान है। तो यदि 'var x = -10',' + x' भी '-10' है। –
हां, एहसास करें कि + x ने x के मान में कुछ भी नहीं किया है (इसे तुलना के लिए अस्थायी रूप से बढ़ाया नहीं है)। – grantwparks