2016-05-25 4 views
7

मैं array.some(Boolean) लिखने के लिए एक तरीका के रूप में लिखना चाहूंगा कि array में कोई भी तत्व सत्य है।जावास्क्रिप्ट: क्या बूलियन ऑब्जेक्ट को कॉलबैक फ़ंक्शन के रूप में उपयोग किया जा सकता है?

क्या इस तरह से Boolean ऑब्जेक्ट का उपयोग करने में कोई समस्या है? क्या यह आधुनिक ब्राउज़र में एक ही व्यवहार है? क्या यह हमेशा array.some(function(elem) { return !!elem; }) के बराबर है?

+1

जहाँ तक मुझे इस समारोह है कि बूलियन के लिए किसी भी मूल्य डाले जानते हैं। कोई भी कार्य एक वस्तु भी है, इसलिए एक वस्तु होने के लिए बूलियन एक समस्या नहीं होनी चाहिए। – sielakos

+0

बेशक, हास्य की अच्छी भावना वाला कोई व्यक्ति 'बूलियन' फ़ंक्शन को ओवरराइट कर सकता है, कहें, 'बूलियन = फ़ंक्शन() {सत्य वापस लौटें; }; '। इसके अलावा, कोई contraindications नहीं होना चाहिए। –

उत्तर

7

क्या इस तरह से Boolean ऑब्जेक्ट का उपयोग करने में कोई समस्या है?

संख्या उदाहरण के लिए parseInt के विपरीत (जो समस्याग्रस्त हो जाएगा), Boolean केवल एक ही तर्क की अपेक्षा करता है। इसलिए अन्य कॉलबैक तर्कों (इंडेक्स और सरणी) को पारित करने के साथ कोई समस्या नहीं होनी चाहिए, यह उन्हें अनदेखा कर देगा।

क्या यह आधुनिक ब्राउज़र में समान व्यवहार करता है?

मुझे उम्मीद है। यदि आप Boolean फ़ंक्शन पर भरोसा नहीं कर सकते हैं, तो और क्या बचा है?

क्या यह हमेशा array.some(function(elem) { return !!elem; }) के बराबर है?

हां। spec से:

Boolean एक समारोह के रूप के बजाय एक निर्माता के रूप में बुलाया है, यह एक प्रकार रूपांतरण प्रदर्शन करती है।

और यह अनिवार्य रूप से !! भी करता है। कल्पना से


प्रासंगिक संदर्भ:

संबंधित मुद्दे

 संबंधित मुद्दे