js.zonayed.me icon indicating copy to clipboard operation
js.zonayed.me copied to clipboard

জাভাস্ক্রিপ্টঃ ক্লোজারস(Closures) নিয়ে ধারণা

Open utterances-bot opened this issue 4 years ago • 8 comments

জাভাস্ক্রিপ্টঃ ক্লোজারস(Closures) নিয়ে ধারণা | হাতেকলমে জাভাস্ক্রিপ্ট

আমরা গত পর্বে দেখেছি জাভাস্ক্রিপ্ট এর লেক্সিক্যাল স্কোপিং। এবার এর সাথে রিলেটেড আরেকটা টপিক ক্লোজারস নিয়ে এই পর্বে আলোচনা করবো। ক্লোজারসেও আমাদের আলাদা করে কিছু করতে হবে না। বরং এটা জাভাস্ক্রিপ্ট এর বাই ডিফল্ট বিহেভিয়ার। তবে বুঝার এবং বিভিন্ন টেকনিকের জন্যে অবশ্যই ক্লোজারস সম্পর্কে জানতে হবে। জাভাস্ক্রিপ্ট এর অনেকগুলো আশ্চর্যজনক বিহেভিয়ার এবং স্পেশালিটির মধ্যে ক্লোজারসও […]

https://js.zonayed.me/basic/post-16

utterances-bot avatar Apr 11 '20 19:04 utterances-bot

ভাই উপরের Lexical Scope Article এর লিংক কাজ করছে না। দয়া করে ফিক্স করে দিয়েন <3

faisalahammad avatar Apr 11 '20 19:04 faisalahammad

খুবই গুরুত্বপূর্ন পোষ্ট । নিচের কোডটি দেখের জন্য অনুরোধ রইলো . function closuresDemo() { var x = 10; return function() { var y = 20; console.log('Sum: ' + (x + y)); } }

var aVar = closuresDemo(); var total = aVar(); console.log(total);

যেহেতু closure function/ return function কোন কিছু রিটার্ন করছে না , তাই মনে হয় , aVar() কে কল করার সময় সেটাকে স্টোর করে আবার পুনরায় কনসল লগ করার প্রয়োজন পরে না

ধন্যবাদ

shajal-kumer avatar Jun 18 '20 07:06 shajal-kumer

খুবই গুরুত্বপূর্ন পোষ্ট । নিচের কোডটি দেখের জন্য অনুরোধ রইলো . function closuresDemo() { var x = 10; return function() { var y = 20; console.log('Sum: ' + (x + y)); } }

var aVar = closuresDemo(); var total = aVar(); console.log(total);

যেহেতু closure function/ return function কোন কিছু রিটার্ন করছে না , তাই মনে হয় , aVar() কে কল করার সময় সেটাকে স্টোর করে আবার পুনরায় কনসল লগ করার প্রয়োজন পরে না

ধন্যবাদ

ঠিক ধরেছেন ভাই... এটা যে কি ভেবে লিখলাম বুঝতে পারতেছি না... তবে ফিক্স করে দিচ্ছি... ধন্যবাদ ভাই এটা ধরিয়ে দেওয়ার জন্য...

zonayedpca avatar Jul 04 '20 16:07 zonayedpca

খুব ভালো আরও বিস্তারিত আলোচনা করার প্রয়োজন ছিলো?

nurullah7733 avatar Oct 31 '20 14:10 nurullah7733

মাশা আল্লাহ্‌! <3

ibnumahtab avatar Aug 02 '21 10:08 ibnumahtab

Thank you vai জিনিস গুলো সহজ ভাবে বোঝানোর জন্য 😊

motiurdev avatar Aug 03 '21 07:08 motiurdev

thanks

naazim7 avatar Aug 30 '21 09:08 naazim7

MDN definition : A closure is the combination of a function bundled together (enclosed) with references to its surrounding state (the lexical environment).

তার মানে ক্লোজার হলোঃ- আমরা যখন কোনো ফাংশন রিটার্ন করি আরেকটা ফাংশন থেকে, যেখানে ( ফাংশনের লোকাল মেমোরি ) ফাংশন টা saved ছিল, রিটার্ন হওয়ার সময় শুধু এই ( চাইল্ড / returned function ) ফাংশনের definition টাই রিটার্ন করবে না, সাথে তার surrounding data (যেখানে saved ছিল - লোকাল মেমোরির) গুলোও attached (চাইল্ড ফাংশনের backpack -এ) হয়ে যাবে।

আর যখন ফাংশনের executing শেষ হয়ে যাবে & সেই ফাংশনের Local মেমোরিও delete হয়ে যাবে (except returned value)

Example :

function outer (){
 let counter = 0;
 function incrementCounter (){ counter ++; }
 return incrementCounter;
}
const myNewFunction = outer();
myNewFunction();
myNewFunction();

Closure

আপনার লেখাটা অনেক আগে পড়ছিলাম আজ হঠাৎ মনে হলো এই লাইন গুলার কথা, আমার বুঝতে কষ্ট হচ্ছে এই লাইন গুলা ঃ-

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

সরি ভাই, আমার ভুল হলে ধরিয়ে দিবেন প্লিজ।❤️❤️❤️

আমি এই concept গুলো শিখছি Will Sentance থেকে।

mdpabel avatar Sep 06 '21 17:09 mdpabel