2014-05-05 10 views
8

मैं जावास्क्रिप्ट के लिए नया हूं और सोच रहा हूं कि जानबूझकर किसी फ़ंक्शन से अपरिभाषित मूल्य का एक सामान्य अभ्यास है।क्या यह जावास्क्रिप्ट फ़ंक्शन के लिए जानबूझकर अनिर्धारित मूल्य को वापस करने के लिए सामान्य है?

उदाहरण के लिए, एक विभाजन() फ़ंक्शन इस तरह लागू किया जाना चाहिए:

var divide1 = function (x, y) { 
    if (y === 0) { 
     return undefined; 
    } 

    return x/y; 
}; 

या इस तरह?

var divide2 = function (x, y) { 
    if (y === 0) { 
     throw new Error("Can't divide by 0"); 
    } 

    return x/y; 
}; 

मुझे लगता है कि अपरिभाषित को वापस लौटाती आम तौर पर कोई वापसी मान (जावा या सी # में शून्य के बराबर) के साथ काम करता है के लिए आरक्षित है।

+4

दूसरा एक निश्चित रूप से बेहतर समाधान है, जहां आप ठीक से अपवाद संभाला है नहीं कर रहा हूँ। – KBN

+3

एक अपवाद उठाया, इसे इतना संभाला नहीं। – BoltClock

+0

@ बोल्टक्लॉक ओह हाँ, वास्तव में 'उठाया'। – KBN

उत्तर

2

यह डिफ़ॉल्ट है:

function foo() {} 
console.log(foo()); 

लेकिन यह पता चला है कि यह एक अच्छा विकल्प नहीं है। कोड जो एक असाधारण राज्य में चलाया जा सकता है उसे चुपचाप ऐसा नहीं करना चाहिए। क्रैक के माध्यम से जावास्क्रिप्ट में बहुत सारी त्रुटियां फिसलती हैं क्योंकि कुछ गलत होने पर कोड हिंसक रूप से नहीं टूटता है।

तो जब तक कि आप एक असाधारण अच्छे डेवलपर नहीं हैं और आप गारंटी दे सकते हैं कि जो भी इस कोड को छूएगा वह एक ही स्तर पर है और आप कभी गलतियां नहीं करते हैं, तो आप undefined वापस कर सकते हैं। मैं, खुद, एक अपवाद फेंक देंगे।

बाहर कर देता है मैं एक अच्छा पर्याप्त डेवलपर :-)

+0

भी लौटा सकता है, तो मैं मानता हूं कि अपवाद फेंकना सबसे अच्छा विकल्प है, लेकिन मैं हूं यह सोचकर कि क्या यह दृष्टिकोण आमतौर पर JQuery जैसे प्रमुख पुस्तकालयों में लिया गया है? जंगली में इन दृष्टिकोणों में से प्रत्येक कितनी लोकप्रिय है, इस बारे में महसूस करने की कोशिश कर रहा है। –

+0

सभी प्रमुख पुस्तकालय जिन्हें मैं जानता हूं उससे बचें। jQuery एक विशेष मामला है क्योंकि जब कोई चयनकर्ता मेल नहीं खाता है तो यह खाली सूचियों को वापस लौटाता है, इसलिए यह एक "सुरक्षित" अपरिभाषित लौटने जैसा है जो किसी भी अपवाद/समस्याओं का कारण नहीं बनता है (लेकिन साथ ही यह स्पॉट करना मुश्किल बनाता है कीड़े)।उस ने कहा, आप सबसे अधिक इस्तेमाल किए गए ढांचे के रूप में जावास्क्रिप्ट (भाषा और रनटाइम) के बारे में सोच सकते हैं। इस मामले में, जवाब हां है, सबसे अधिक इस्तेमाल किया गया ढांचा यह करता है और इससे कई समस्याएं होती हैं। मैं 100% निश्चित नहीं हूं लेकिन कॉफीस्क्रिप्ट अब इस वैश्विक चर का समर्थन नहीं करता है। –

+0

बिल्कुल सही, स्पष्टीकरण के लिए धन्यवाद। –

2

मुझे लगता है कि अपरिभाषित लौटने से आमतौर पर कोई वापसी मूल्य (जावा या सी # में शून्य के बराबर) के कार्यों के लिए आरक्षित किया जाता है।

जावा या सी # के रूप में, आप return; भी लिख सकते हैं।

इन तीन कार्यों एक ही बात लौट रहे हैं:

function VOID() { 
    return; 
} 


function VOID() { 
    return undefined; 
} 


function VOID() { 

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