js.zonayed.me
js.zonayed.me copied to clipboard
জাভাস্ক্রিপ্টঃ ক্লোজারস(Closures) নিয়ে ধারণা
জাভাস্ক্রিপ্টঃ ক্লোজারস(Closures) নিয়ে ধারণা | হাতেকলমে জাভাস্ক্রিপ্ট
আমরা গত পর্বে দেখেছি জাভাস্ক্রিপ্ট এর লেক্সিক্যাল স্কোপিং। এবার এর সাথে রিলেটেড আরেকটা টপিক ক্লোজারস নিয়ে এই পর্বে আলোচনা করবো। ক্লোজারসেও আমাদের আলাদা করে কিছু করতে হবে না। বরং এটা জাভাস্ক্রিপ্ট এর বাই ডিফল্ট বিহেভিয়ার। তবে বুঝার এবং বিভিন্ন টেকনিকের জন্যে অবশ্যই ক্লোজারস সম্পর্কে জানতে হবে। জাভাস্ক্রিপ্ট এর অনেকগুলো আশ্চর্যজনক বিহেভিয়ার এবং স্পেশালিটির মধ্যে ক্লোজারসও […]
ভাই উপরের Lexical Scope Article এর লিংক কাজ করছে না। দয়া করে ফিক্স করে দিয়েন <3
খুবই গুরুত্বপূর্ন পোষ্ট । নিচের কোডটি দেখের জন্য অনুরোধ রইলো . 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() কে কল করার সময় সেটাকে স্টোর করে আবার পুনরায় কনসল লগ করার প্রয়োজন পরে না
ধন্যবাদ
খুবই গুরুত্বপূর্ন পোষ্ট । নিচের কোডটি দেখের জন্য অনুরোধ রইলো . 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() কে কল করার সময় সেটাকে স্টোর করে আবার পুনরায় কনসল লগ করার প্রয়োজন পরে না
ধন্যবাদ
ঠিক ধরেছেন ভাই... এটা যে কি ভেবে লিখলাম বুঝতে পারতেছি না... তবে ফিক্স করে দিচ্ছি... ধন্যবাদ ভাই এটা ধরিয়ে দেওয়ার জন্য...
খুব ভালো আরও বিস্তারিত আলোচনা করার প্রয়োজন ছিলো?
মাশা আল্লাহ্! <3
Thank you vai জিনিস গুলো সহজ ভাবে বোঝানোর জন্য 😊
thanks
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();
আপনার লেখাটা অনেক আগে পড়ছিলাম আজ হঠাৎ মনে হলো এই লাইন গুলার কথা, আমার বুঝতে কষ্ট হচ্ছে এই লাইন গুলা ঃ-
কিন্তু এখানে আরো মজার ব্যাপার হচ্ছে ইভেন আমরা যদি প্যারেন্ট ফাংশনটা রিটার্ন করে ফেলি তারপরেও আমরা চাইল্ড ফাংশন থেকে প্যারেন্ট ফাংশনের ভ্যারিয়েবল, ফাংশন অথবা অবজেক্ট অ্যাক্সেস করতে পারবো। কারণ এগুলো রিটার্ন হওয়ার পরও মেমোরী তে থেকে যায় । আর এটাই হচ্ছে ক্লোজারস।
সরি ভাই, আমার ভুল হলে ধরিয়ে দিবেন প্লিজ।❤️❤️❤️
আমি এই concept গুলো শিখছি Will Sentance থেকে।