प्रश्न थोड़ा दिनांकित है, लेकिन मुझे लगता है कि उत्तर सभी एक महत्वपूर्ण भेद को याद करते हैं। यही है, while
लूप अभिव्यक्ति की अपेक्षा करता है जो एक सशर्त, यानी एक बूलियन या मान को उभारा जाता है जिसे एक बूलियन में परिवर्तित किया जा सकता है। विवरण के लिए Mozilla docs देखें।
एक शुद्ध असाइनमेंट (तत्काल बिना) को एक बूलियन को इसके डिफ़ॉल्ट रिटर्न वैल्यू (दाएं हाथ के मूल्य) के माध्यम से मजबूर किया जाता है।
एक var
(या let
या const
) एक बयान कि एक वैकल्पिक काम की अनुमति देता है, लेकिन undefined
की वापसी मूल्य है। अकेले
var foo = 42; // undefined
bar = 42 // 42
वापसी मान सवाल का जवाब नहीं है, के बाद से undefined
falsey है, लेकिन यहां तक कि अगर आप एक जे एस में एक var
डाल देना कि दिखाता है:
आप आसानी से अपने कंसोल में इस परीक्षण कर सकते हैं सशर्त यह हमेशा झूठे का मूल्यांकन करेगा।
अन्य ने for
कथन का उल्लेख किया है और वे चर के घोषणा और तत्कालता की अनुमति देते हैं। यह सच है, लेकिन documentation explains कि for
एक कथन या सत्यापन की अपेक्षा करता है।
राय भिन्न हो सकती है, लेकिन मेरे लिए यह सब एक समझदार स्थिरता को जोड़ता है जो लूप के संबंध में व्यवहार में एक कर्कश नहीं है।while
लूप for
लूप के मुकाबले if
कथन के लूपिंग संस्करण के रूप में बेहतर विचार है। यदि इनमें से सभी में quirkiness है, तो यह for
भाषा के सामान्य वाक्यविन्यास से बयान के थोक विचलन है।
स्रोत
2016-10-04 22:37:18
नीचे दिए गए 2 में परिवर्तनीय घोषणा उत्थान की व्याख्या की गई है लेकिन यह समझाएं कि आप एक 'वें' स्थिति के अंदर एक चर घोषित क्यों नहीं कर सकते हैं (लेकिन उदाहरण के लिए, आप 'शर्तों के लिए) में कर सकते हैं। क्या आपको कभी इसके लिए एक अच्छा स्पष्टीकरण मिला? – Barney
एक और जेएस quirk, यही कारण है कि। –