जवाबों:
हां, returnनिष्पादन को रोकता है और फ़ंक्शन को बाहर निकालता है। returnहमेशा ** अपने कार्य को तुरंत समाप्त कर देता है, आगे के निष्पादन के साथ अगर यह एक लूप के अंदर है।
यह आसानी से अपने लिए सत्यापित है:
function returnMe() {
for (var i=0; i<2; i++) {
if (i === 1) return i;
}
}
alert(returnMe());
// 1
** नोट्स: इस विशेष मामले के बारे में try/catch/finally और इस जवाब के बारे में अन्य जवाब देखें कि कैसे लूप के अपने फंक्शन का दायरा होता है, जिसमें फंक्शन शामिल नहीं होगा।
returnअभी भी फ़ंक्शन कॉलबैक की वर्तमान पुनरावृत्ति से, अपने स्वयं के दायरे में, लेकिन संपूर्ण कॉलिंग विधि से टूटने की उम्मीद नहीं की जाएगी forEach()। इसलिए यह स्वयं लूप से नहीं लौट रहा है , लेकिन यह कॉलबैक से लौट रहा है जो लूप निष्पादित करता है। जुड़ा हुआ सवाल से कोड उदाहरण में, उत्पादन है 1,2,4,5लंघन 3वापसी की वजह से।
returnहमेशा वर्तमान thisसंदर्भ से वापस आ जाएगा ।
breakऔर नहीं करना है return।
में सबसे (इसे मिलाकर) मामलों, returnतुरंत बाहर निकल जाएगा। हालांकि, यदि रिटर्न tryएक साथ finallyब्लॉक के साथ एक ब्लॉक में है, तो finallyहमेशा निष्पादित होता है और में "ओवरराइड" कर सकता returnहै try।
function foo() {
try {
for (var i = 0; i < 10; i++) {
if (i % 3 == 0) {
return i; // This executes once
}
}
} finally {
return 42; // But this still executes
}
}
console.log(foo()); // Prints 42
returnबयान एक पाश केवल अगर यह समारोह अंदर बंद हो जाता है। अन्यथा, आपको यह त्रुटि मिलेगी:
Uncaught SyntaxError: Illegal return statement(…)
यह कोड लूप में पहली पुनरावृत्ति के बाद लूप से बाहर for ofनिकलेगा:
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
return;
}
console.log(iterator.name);// 1
}
नीचे दिए गए कोड हालत पर कूद जाएगा और एक for ofलूप पर जारी रहेगा :
const objc = [{ name: 1 }, { name: 2 }, { name: 3 }];
for (const iterator of objc) {
if (iterator.name == 2) {
continue;
}
console.log(iterator.name); // 1 , 3
}
हां, एक बार returnस्टेटमेंट निष्पादित हो जाने पर, पूरा फ़ंक्शन उसी बिंदु पर बाहर निकल जाता है।
जरा सोचिए कि अगर ऐसा नहीं होता और returnहर बार उस बयान को जारी रखा जाता, तो क्या होता ? जब आप इसके बारे में सोचते हैं तो यह मूल्य वापस करने का अर्थ अमान्य कर देगा।
उत्तर हां है, यदि आप रिटर्न स्टेटमेंट लिखते हैं तो नियंत्रण तुरंत कॉलर विधि पर वापस चला जाता है। अंत में ब्लॉक के अपवाद के साथ, जो रिटर्न स्टेटमेंट के बाद निष्पादित हो जाता है।
और अंत में आपके द्वारा लौटाए गए मान को भी ओवरराइड कर सकते हैं, यदि आप अंततः ब्लॉक के अंदर वापस आते हैं। लिंक: कोशिश-कैच-आखिर-वापसी स्पष्टीकरण
प्रति कथन परिभाषा परिभाषा के अनुसार:
जावा डॉक्स:
रिटर्न स्टेटमेंट का उपयोग कंट्रोल फ्लो ब्लॉक से बाहर शाखा करने और विधि से बाहर निकलने के लिए किया जा सकता है
MSDN प्रलेखन:
रिटर्न स्टेटमेंट किसी फ़ंक्शन के निष्पादन को समाप्त करता है और कॉलिंग फ़ंक्शन पर नियंत्रण लौटाता है। कॉल के तुरंत बाद बिंदु पर कॉलिंग फ़ंक्शन में निष्पादन शुरू हो जाता है।
विकिपीडिया:
एक रिटर्न स्टेटमेंट वर्तमान सबरूटीन को छोड़ने के लिए निष्पादन का कारण बनता है और कोड में उस बिंदु पर फिर से शुरू होता है, जहां सबरूटीन को बुलाया गया था, जिसे इसके वापसी पते के रूप में जाना जाता है। रिटर्न पता सहेजा जाता है, आमतौर पर प्रक्रिया के कॉल स्टैक पर, सबरूटीन कॉल करने के संचालन के भाग के रूप में। कई भाषाओं में रिटर्न स्टेटमेंट किसी फ़ंक्शन को फ़ंक्शन को कोड कहे जाने वाले रिटर्न मान को निर्दिष्ट करने की अनुमति देते हैं।
"वापसी" फ़ंक्शन से बाहर निकलता है, लेकिन यदि आप डेटा की बड़ी मात्रा को वापस करना चाहते हैं, तो आप इसे एक सरणी में स्टोर कर सकते हैं और फिर डेटा के प्रत्येक टुकड़े को 1 से 1 लूप में वापस करने की कोशिश करने के बजाय इसे वापस कर सकते हैं।