উত্তর:
হ্যাঁ, 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প্রতিবার সেই বিবৃতি কার্যকর করে ? আপনি যখন এটির বিষয়ে চিন্তা করেন তখন এটি কোনও অর্থ ফেরত দেওয়ার অর্থটিকে অবৈধ করে দেবে।
উত্তর হ্যাঁ, আপনি রিটার্ন স্টেটমেন্ট লিখলে নিয়ন্ত্রণগুলি সঙ্গে সঙ্গে কলার পদ্ধতিতে ফিরে যায়। অবশেষে ব্লক ব্যতীত, যা রিটার্নের স্টেটমেন্টের পরে কার্যকর হয়।
এবং অবশেষে আপনি ফিরে আসা মানটিও ওভাররাইড করতে পারে, যদি আপনি অবশেষে ব্লকের ভিতরে ফিরে যান। লিঙ্ক: চেষ্টা করুন-শেষের দিকে-ফেরতের স্পষ্টতা
বিবৃতি অনুসারে রিটার্নের সংজ্ঞা:
জাভা ডক্স:
একটি রিটার্ন বিবৃতি একটি নিয়ন্ত্রণ ফ্লো ব্লক থেকে শাখা এবং পদ্ধতিটি প্রস্থান করতে ব্যবহার করা যেতে পারে
এমএসডিএন ডকুমেন্টেশন:
রিটার্ন স্টেটমেন্টটি কোনও ফাংশনের কার্য সম্পাদন বন্ধ করে দেয় এবং কলিং ফাংশনে নিয়ন্ত্রণ ফিরিয়ে দেয়। কলটি অনুসরণের সাথে সাথে কলিং ফাংশনে এক্সিকিউশন পুনরায় শুরু হয়।
উইকিপিডিয়া:
একটি রিটার্ন স্টেটমেন্টের ফলে মৃত্যুদন্ড কার্যকর হয়ে বর্তমান সাবরুটিন ছেড়ে যায় এবং তার সাবটারউইন ডেকে আনা হয় তার ঠিক পরে কোডের বিন্দুতে আবার শুরু হয়, যেখানে তার রিটার্ন ঠিকানা হিসাবে পরিচিত। সাবোট্রিন কল করার ক্রিয়াকলাপের অংশ হিসাবে সাধারণত প্রক্রিয়াটির কল স্ট্যাকের মধ্যে ফেরতের ঠিকানাটি সংরক্ষণ করা হয়। অনেক ভাষায় রিটার্নের স্টেটমেন্টগুলি একটি ফাংশনকে ফাংশন বলে এমন কোডে ফেরত দেওয়ার জন্য একটি ফিরতি মান নির্দিষ্ট করার অনুমতি দেয়।
"রিটার্ন" ফাংশন থেকে প্রস্থান করে তবে আপনি যদি প্রচুর পরিমাণে ডেটা ফিরিয়ে দিতে চান তবে আপনি এটিকে একটি অ্যারেতে সংরক্ষণ করতে পারেন এবং তারপরে লুপের প্রতিটি টুকরো 1 দ্বারা 1 করে ফেরত দেওয়ার চেষ্টা না করে ফিরে আসতে পারেন।