मुझे हमेशा सिखाया गया है कि किसी ifहालत में साइड-इफ़ेक्ट होना बुरा है। मेरा कहने का तात्पर्य है;
if (conditionThenHandle()) {
// do effectively nothing
}
... विरोध के रूप में;
if (condition()) {
handle();
}
... और मैं समझता हूं कि, और मेरे कोलेजियम खुश हैं क्योंकि मैं ऐसा नहीं करता हूं, और हम सभी शुक्रवार को 17:00 बजे घर जाते हैं और सभी को एक मीरा सप्ताहांत होता है।
अब, ECMAScript5 शुरू की तरह के तरीकों every()और some()करने के लिए Array, और मैं उन्हें बहुत उपयोगी पाते हैं। वे क्लीनर से अधिक हैं for (;;;), आपको एक और गुंजाइश देते हैं, और एक चर द्वारा तत्व को सुलभ बनाते हैं।
हालाँकि जब इनपुट को मान्य किया जाता है, तो मैं अधिक-अक्सर-से- इनपुट का सत्यापन करने की स्थिति में स्वयं का उपयोग नहीं करता every/ करती हूं some, फिर इनपुट को एक प्रयोग करने योग्य मॉडल में परिवर्तित करने के लिए शरीर में every/ some फिर से उपयोग करें ;
if (input.every(function (that) {
return typeof that === "number";
})) {
input.every(function (that) {
// Model.findById(that); etc
}
} else {
return;
}
... जब मैं जो करना चाहता हूं वह है;
if (!input.every(function (that) {
var res = typeof that === "number";
if (res) {
// Model.findById(that); etc.
}
return res;
})) {
return;
}
... जो मुझे एक if, हालत में दुष्प्रभाव देता है , जो खराब है।
तुलना में, यह एक पुराने के साथ कोड लगेगा for (;;;);
for (var i=0;i<input.length;i++) {
var curr = input[i];
if (typeof curr === "number") {
return;
}
// Model.findById(curr); etc.
}
मेरे प्रश्न हैं:
- क्या यह निश्चित रूप से एक बुरा अभ्यास है?
- क्या मैं (मिस। अब) का उपयोग कर रहा हूं (
someऔर क्या मुझे इसके लिए उपयोग करना चाहिए ?)everyfor(;;;) - क्या एक बेहतर दृष्टिकोण है?
some करना चाहता हूं , अगर मैं उपयोग करता हूं, तो मैं उन सभी तत्वों के लिए कुछ करना चाहता हूं ... और मुझे उस जानकारी तक पहुंचने नहीं देता, इसलिए या तो मैं नहीं कर सकता हूं उनका उपयोग करें, या मुझे साइड-इफेक्ट जोड़ना होगा। everysomeevery
someमेरी में ifहालत निर्धारित करने के लिए सरणी में एक निश्चित तत्व एक निश्चित संपत्ति, 9/10 मैं काम करने के लिए की जरूरत है कि क्या दर्शाती है पर मेरी में उस तत्व ifशरीर; अब, जैसा someकि मुझे नहीं बताया गया है कि कौन से तत्वों ने संपत्ति का प्रदर्शन किया (बस "एक किया"), मैं या तो शरीर में some फिर से उपयोग कर सकता हूं (ओ (2 एन)), या मैं सिर्फ अगर स्थिति के अंदर ऑपरेशन कर सकता हूं ( जो बुरा है, क्योंकि इसका सिर के भीतर एक दुष्प्रभाव है)।
every, निश्चित रूप से।