রিটার্ন এবং রিটার্ন () এর মধ্যে পার্থক্য কী?


97
function a() { return 1; }
function b() { return(1); }

আমি ক্রোমের কনসোলে উপরের কোডটি পরীক্ষা করেছি এবং দুজনেই ফিরে এসেছি 1

function c() { return "1"; }
function d() { return("1"); }

আমি উপরের কোডটিও পরীক্ষা করেছিলাম এবং উভয় ফাংশনই ফিরে এসেছিল "1"

সুতরাং ব্যবহার returnএবং এর মধ্যে পার্থক্য কি return()?


21
এখানে উত্তর এছাড়াও প্রয়োগ করা হবে void(x),typeof(x)
পল এস

4
@ PaulS.-ছিল সবসময় দ্বারা ধাঁধা void(0)যেহেতু এটি জন্য সাধারণভাবে সংক্ষেপে হতে অনুমিত এর অনির্ধারিত । সুতরাং যদি এটি শর্টহ্যান্ড হয় তবে কেন অপ্রয়োজনীয় চরিত্রগুলি অন্তর্ভুক্ত করবেন? ;-)
রবজি

4
@ রবজি আমি মনে করি এটি পাইথন থেকে বহনযোগ্য ও সম্ভবত যে বিশেষ ক্ষেত্রে আপনি অপারেটরদের void i = 1; // ReferenceErrorবনাম অন্তর্ভুক্ত করতে চান তার জন্য দরকারী হতে পারেvoid (i = 1); // undefined
পল এস

4
আপনি এই প্রশ্নটি দ্বারা বিস্মিত হতে পারেন, যা আপনার প্রশ্নটি সি # তে প্রয়োগ করা হয়েছে: stackoverflow.com/questions/2186595/…
এরিক লিপার্ট

উত্তর:


177

মাঝখানে একই

var i = 1 + 1;

এবং

var i = (1 + 1);

যে, কিছুই না। প্রথম বন্ধনীগুলি অনুমোদিত কারণ তারা কোনও অভিব্যক্তিতে মূল্যায়ন আদেশকে প্রভাবিত করার অনুমতি দেয় তবে আপনার উদাহরণগুলিতে সেগুলি কেবল অতিরিক্ত অতিরিক্ত।

returnএকটি ফাংশন নয়, একটি বিবৃতি । এটি সিন্থেটিকভাবে অন্যান্য সাধারণ নিয়ন্ত্রণ প্রবাহের বিবৃতিগুলির মতো breakএবং continueএটি প্যারেন্থিসগুলি ব্যবহার করে না।


12
একটি রিটার্ন বিবৃতি একটি অভিব্যক্তি অনুসরণ করা যেতে পারে। একটি ফিরতি, একটি ফাংশনে থাকা আবশ্যক, যাতে ফাংশন প্রকাশের মান, অথবা যদি এক না হয়, তাহলে undefined
রবজি

37
@ chris97ong: রিটার্ন কোনও কাজ নয়।
রিমকো গ্রিলিচ 13

34
আপনি যদি returnকোনও ফাংশন তৈরি করেন তবে কীভাবে আপনি এটি থেকে কোনও মূল্য ফেরত দেবেন?
dan04

4
এটি একটি দুর্দান্ত উদাহরণ সহ একটি দুর্দান্ত উত্তর, তবে আমি মনে করি এটি সম্ভবত যুক্ত হওয়া উচিত যে 'রিটার্ন' মূল উত্তরের কোনও ক্রিয়া নয় - এটি বিবেচনা করে যে এটি ভুল বোঝাবুঝির মূল কারণ যা এই প্রশ্নের জন্ম দিয়েছে।
বিস্কুটবেকার

4
@ বিস্কুটবেকার: আমি কিছুটা যুক্ত করেছি। যখন আমি এই সংক্ষিপ্ত উত্তর নিচে jotted আমি হয়নি না এটা 50+ upvotes পাওয়ার আশা ...
RemcoGerlich

21

এখানে কোন পার্থক্য নেই.

returnএটি কোনও ফাংশন কল নয়, তবে একটি ভাষা বিবৃতি। প্রথম বন্ধনীর সাথে আপনি যা করছেন তা কেবল আপনার রিটার্নের মানকে ভাগ করে নেওয়া হচ্ছে যাতে এটি মূল্যায়ন করা যায়। উদাহরণস্বরূপ, আপনি লিখতে পারেন:

return (x == 0);

এই ক্ষেত্রে, আপনি বিবৃতিটির মানটি ফিরিয়ে দিন x == 0, যা কোনও বুলিয়ান trueবা falseতার মানের উপর নির্ভর করে ফিরিয়ে দেবে x


6
রিটার্ন একটি কীওয়ার্ড যা একটি রিটার্ন স্টেটমেন্টের সূচনা করে।
রবজি

4
রিটার্ন স্টেটমেন্টের মূল্যায়নের জন্য কোনও "গ্রুপিং" দরকার নেই। সুতরাং যে কোনও ক্ষেত্রেই বুলিয়ান রিটার্ন হবে।
ওল্ফ

18

আসলে এখানে প্রাধান্য ()বেশি তাই এটি প্রথমে মূল্যায়ন করে:

এখানে প্রথমে ("1")নিম্নলিখিত উপায়ে মূল্যায়ন করুন:

("1")                     ==> "1"
("1","2")                 ==> "2"
("1","2","3")             ==> "3"
("1"+"2","2"+"2","3"+"2") ==> "32"
(2+3+6)                   ==>  11

সুতরাং উপরের বিবৃতি সমান:

return "1";

দর্শনীয়ভাবে দেখুন:

ভাইসাল

সুতরাং কার্যকারিতার মধ্যে মূলত কোনও পার্থক্য নেই তবে দ্বিতীয়টি সম্ভবত প্রথমে বন্ধনীগুলি সমাধান করার কারণে একটি উপেক্ষিতভাবে কিছুটা ধীর হতে পারে।


4
এমনটি না হলে আপনি কেন পুরোপুরি যাচাই করা হবে না?

9

একেবারে কোনও পার্থক্য নেই। আপনি যদি জেএস (ECMAScript) রিটার্ন স্টেটমেন্টের স্পেসিফিকেশন তাকান । অন্যান্য অনেক কিছুর মধ্যে এটি আপনাকে বলছে:

প্রত্যাবর্তন [এখানে লাইনটার্মিনেটর নেই] এক্সপ্রেশন;

আপনি যে মত প্রকাশ করতে পারেন return। অভিব্যক্তি hello, Math.abs(x), yourCustomFunc(7), অথবা আপনার দ্বিতীয় ক্ষেত্রে এই হতে পারে 1অথবা (1)1মূল্যায়নের পরে মত প্রকাশের সমান(1) এবং একইরূপে (((((1))))))বা এমনকি সত্যই উদ্ভট কিছু (+(!(+(!1))))


4
সরকারী রেফারেন্সের জন্য +1। এখানে পৃষ্ঠার প্রতিটি রেফারেন্স নেই? - এক পৃষ্ঠার এইচটিএমএল খুব দীর্ঘ।
নেকড়ে

@ ওল্ফ আমি এরকম পাই নি। এখানে অন্য একটি, তবে এটি একটি পৃষ্ঠার লোকও রয়েছে। Mozilla.org/~jorendorff/…
সালভাদোর ডালি

হ্যাঁ, দু: খিত আমি কোন সাফল্য চাই না। রিটার্ন স্টেটমেন্টের পুরো সিনট্যাক্সে আপনার উদ্ধৃতি প্রসারিত করার বিষয়ে কী?
ওল্ফ

9

কোনও পার্থক্য নেই, প্রথম বন্ধনী alচ্ছিক। এমএসডিএন দেখুন :

return[(][expression][)];

Alচ্ছিক অভিব্যক্তি যুক্তিটি হ'ল ফাংশন থেকে ফিরে আসার মান। বাদ দেওয়া থাকলে, ফাংশনটি কোনও মান দেয় না।

আপনি কোনও ফাংশন কার্যকর করা বন্ধ করতে এবং প্রকাশের মানটি ফিরিয়ে দিতে রিটার্ন স্টেটমেন্ট ব্যবহার করেন। যদি এক্সপ্রেশন বাদ দেওয়া হয়, বা কোনও ফাংশনের মধ্যে থেকে কোনও রিটার্ন স্টেটমেন্ট কার্যকর করা হয় না, তবে যে ফাংশনটি বর্তমান ফাংশন বলে তাকে অভিব্যক্তি নির্ধারিত হয়।


8
কেবল এমএসই রিটার্ন স্টেটমেন্টে গ্রুপিংকে "alচ্ছিক" করার কথা ভাববে । এগুলি কোনওরকম অভিব্যক্তির মতো বা ব্যাকরণের অন্যান্য অনেক অংশের মতোই সেখানে "alচ্ছিক"।
রবিজি

@ রবজি: তবে স্পষ্টতই, তাদের কাছে কোনও returnবিবৃতিতে জিজ্ঞাসা করার সম্ভাবনা অনেক বেশি । : পি এমএস সম্ভবত জেএস নুবস থেকে প্রশ্ন ফিল্ড করে ক্লান্ত হয়ে পড়েছিলেন।
সিএওও

4
এম $ ব্যাখ্যাটি ভুল। (), এর বিনিময়ে বিবৃতির অংশ নয়।
সালমান

4
"পাঠকের মধ্যে পার্থক্য রয়েছে।" ওয়েল, হ্যাঁ: দুটিই MSDN বৈশিষ্ট ভুল যে বোঝা return (expressionএবং return expression)আইনি হয়।
জিম বাল্টার

4
@ জিমবাল্টার পাশাপাশি return (), return (এবং return ): পি
পল

9

returnহয় একটি বিবৃতি একটি শব্দ যে ফিরতি বিবৃতি শুরু হয় , না একটি ফাংশন।

যেমনটি উল্লেখ করা হয়েছে, অতিরিক্ত বন্ধনী মূল্যায়ন আদেশকে প্রভাবিত করে তবে নামটির ফাংশনটি "চালানো" করতে ব্যবহৃত হয় না return। এই কারণেই এই লাইনগুলি কোনও সমস্যা ছাড়াই কাজ করে:

return (1);
var a = (1);

এগুলি প্রকৃতপক্ষে এই লাইনের অনুরূপ:

return 1;
var a = 1;

return()সিনট্যাক্স ত্রুটিটি ছুঁড়ে দেওয়ার কারণটি হ'ল নিচের লাইনটিতে ত্রুটি ছুঁড়েছে (তুলনার জন্য রিটার্ন স্টেটমেন্ট):

return();    // SyntaxError: syntax error
var a = ();  // SyntaxError: syntax error

এবং সাইড নোট হিসাবে, এর পরে যদি returnকিছু অন্তর্ভুক্ত না করা হয় তবে এটি ধরে নেয় যে আপনি ফিরে আসতে চেয়েছিলেন undefined
আইকিউআন্দ্রেয়াস

@ ওল্ফ এক্সপ্রেশনগুলি alচ্ছিক, তাই returnনিজেই একটি রিটার্ন স্টেটমেন্ট।
পল

6

মানুষের জন্য বিশাল পার্থক্য এবং জাভাস্ক্রিপ্ট ইঞ্জিনের জন্য শূন্য পার্থক্য রয়েছে।

return 1এটি একটি বিবৃতি যা ঘোষণা করে যে আমাদের তত্ক্ষণাত 1 এর ফলনমূল্যের ফাংশনটি থেকে বেরিয়ে আসা দরকার।

return(1)বোকা কনভেনশন দ্বারা ফাংশন কল হিসাবে ছদ্মবেশিত একই বিবৃতি আপনি জাভাস্ক্রিপ্টে প্রথম বন্ধনী বাইরে স্থান সন্নিবেশ করতে বাধ্য নন। আপনি যদি প্রোডাকশন সিস্টেমে কোডটি ব্যবহার করেন তবে যে কোনও রক্ষণাবেক্ষণকারী আপনার অফিসে এসে দাঁড়াবে এবং টর্চ নিয়ে আসবে, কিছু সময় ব্যয় করার পরে সিদ্ধান্ত নিয়েছিল যে আপনি return()কোডবেজে সত্যিই কোথাও ফাংশন করেছেন কিনা বা কী returnকীওয়ার্ডের জন্য রয়েছে তা কেবল জানেন না ।

অন্য অনেক লোক ইতিমধ্যে সঠিকভাবে বলেছে যে, প্রথম সংখ্যাটির জন্য আধিপত্যের চেয়ে প্রথম বন্ধনীর সাথে "গোষ্ঠী" ব্যতীত কিছুই করা হয় না 1


4
"মানুষের মধ্যে বিশাল পার্থক্য রয়েছে" - সক্ষম ব্যক্তি নয়। "একই বিবৃতিটি ফাংশন কল হিসাবে ছদ্মবেশযুক্ত" - কোনও returnকার্যকারিতা নেই। "জাভাস্ক্রিপ্টে প্রথম বন্ধনী বাহিরের বাইরে স্থান সন্নিবেশ করানোর বাধ্যবাধকতা নয়" - প্রায় কোনও ভাষার প্রয়োজন নেই; এটাকে বোকা বলা বোকামি। "যে কোনও রক্ষণাবেক্ষণকারী আপনার কার্যালয়ে ঝুঁকি এবং মশাল নিয়ে আসবে" - কোনও সক্ষম কেউ তা করবে না। return(1)দুর্বল অনুশীলন তবে এই জাতীয় জিনিসগুলি নিয়ে বিরক্ত লোকেরা সম্পদ নষ্ট করে এবং একটি খারাপ পরিবেশ তৈরি করে।
জিম বাল্টার

@ জিমবাল্টার "সক্ষম নয়" - হা! "প্রায় কোনও ভাষারই এর প্রয়োজন হয় না" - এ কারণেই আমি বলেছিলাম "সম্মেলন"। যদি এটি বোকামি হয় তবে এটিকে "ইডিয়টিক" বলা হয়। "কোনও returnফাংশন নেই" - যে দোভাষী আপনাকে নাম সহ একটি ফাংশন নিবন্ধকরণ করতে নিষেধ returnকরবে এই কোডের পাঠককে প্রথমে তার বিচক্ষণতার বিষয়ে প্রশ্ন জিজ্ঞাসা করতে সাহায্য করবে না, সুতরাং এই কোডটি নষ্ট। return(1)শুধু "দুর্বল অনুশীলন" নয়, কেউ কী করছে সে জানে না তার পক্ষে বিপজ্জনক লক্ষণ!
হাইজিয়ানিয়ান

4
সুতরাং আপনি জানেন না যে "বাধ্য" অর্থ কী, বা আপনি নিজের দাবিটি পরিবর্তন করছেন ... যেভাবেই আমি আপনার উপর আমার আর সময় নষ্ট করব না।
জিম বাল্টার

আমি আপনার শেষ বাক্যটির ট্রথকে সন্দেহ করি; return(সমস্ত ভাষায় আমি জানি যে এই কীওয়ার্ডটি রয়েছে) এর ন্যূনতম প্রাধান্য রয়েছে। সুতরাং, ifচ্ছিক এক্সপ্রেশন উপস্থিত থাকলে, এটি সর্বদা প্রথমে মূল্যায়ন করা হয়।
নেকড়ে

4

রিটার্ন বিবৃতিতে, অভিব্যক্তিটির চারপাশে প্রথম বন্ধনী ইতিমধ্যে অন্তর্নির্মিত।

জাভা স্ক্রিপ্টে, অন্যান্য অনেক ভাষার মতো (যেমন সি, সি ++, জাভা, পাইথন), রিটার্নের বিবৃতিতে দুটি অংশ থাকে: কীওয়ার্ড returnএবং একটি (alচ্ছিক) এক্সপ্রেশন। সুতরাং, যাইহোক, returnকীওয়ার্ড অনুসরণ করা সমস্ত কিছু প্রথমে একটি এক্সপ্রেশন হিসাবে মূল্যায়ন করা হয় , তারপরে, রিটার্ন স্টেটমেন্টটি কলারের হাতে ফিরে নিয়ন্ত্রণের মাধ্যমে "কার্যকর করা" হয়।

প্রথম বন্ধনী ব্যবহার করা বা না ব্যবহার করা শৈলীর বিষয় , অন্যদিকে বেশিরভাগ শৈলীর গাইড আপনার প্রশ্নে উদ্ধৃত বর্ণনার মতো তুচ্ছ মামলার জন্য তাদের নিষেধ করে, কারণ এটি কোনও ফাংশনের মতো ভ্রান্তভাবে ফিরে আসে।

পরে সংযোজন

যদি প্রথম বন্ধনীর সাথে বা বাইরে থাকে তবে behindচ্ছিক প্রকাশটি returnকখনও একই লাইনে রাখতে ভুলবেন না । বাস্তব ফাঁদ সঙ্গে returnপরে একটি লাইন বিরতি যোগ জাভাস্ক্রিপ্ট মিথ্যা:

function test() {
  return 
  1;
}

... কারণ উপরের testফাংশনটি ফিরে আসবে undefined


1

প্রথম বন্ধনী যুক্ত করে, আমরা নিশ্চিত করেছি যে রেফারেন্সের পরে একাধিক বিবৃতি লিখিত হওয়ার আগে জাভাস্ক্রিপ্ট একটি অর্ধিকোলন প্রবেশ করায় না: রেফারেন্সের জন্য: https://developer.mozilla.org/en-US/docs/Web/JavaScript/References/Lexical_grammar # অটোমেটিক_সেমিকোলন_সারণ

উদাহরণ :

return a + b;

রূপান্তরিত হয়

return; a + b;

এএসআই দ্বারা

কনসোলটি "রিটার্ন স্টেটমেন্টের পরে অ্যাক্সেসযোগ্য কোড" কে সতর্ক করবে। এই সমস্যা এড়াতে (এএসআই প্রতিরোধে), আপনি প্রথম বন্ধনী ব্যবহার করতে পারেন:

return ( a + b );
কোডটি অনুলিপি করা হয়েছে: - https://developer.mozilla.org/en-US/docs/Web/ জাভা স্ক্রিপ্ট / রেফারেন্স / স্টেটমেন্টস / রিটার্ন


এটি একেবারে সঠিক এবং জটিল অভিব্যক্তির জন্য এটি বোঝা যায়। এটিকে আরও স্পষ্ট করার জন্য আপনার প্রথম বাক্যে একই লাইনে বা সরাসরি পিছনে পিছনে যুক্ত হওয়া উচিত । আমি মনে করি যে ডাউনটোটটি এর ভুল ব্যাখ্যা দিয়ে আসে।
নেকড়ে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.