ইকমেসক্রিপট ক্লোজার
- পূর্ববর্তী পৃষ্ঠা ফাংশন অবজেক্ট
- পরবর্তী পৃষ্ঠা ওয়ার্কসকিপ
ইকমেসক্রিপট সবচেয়ে ভুল বুঝানো একটি হল, তা ক্লোজার (closure) সমর্থন করে।
বুলক্লোজ, এটি বলা হয়, বহুবচন প্রকাশ যা অপরিগণিত পরিমাণকে অন্তর্ভুক্ত করে, অর্থাৎ, ফাংশন ফাংশন বাইরে প্রকাশিত পরিমাণকে ব্যবহার করতে পারে।
সাধারণ বুলক্লোজ প্রতিদর্শ
ইসক্রিপটেমএসসি এসসিএমএসএসে সার্বজনীন পরিমাণ ব্যবহার একটি সাধারণ বুলক্লোজ প্রতিদর্শ। নিচের কোডটি চিন্তা করুন:
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();
এই কোডটি মেমরির মধ্যে লোড হওয়ার পর, function sayHelloWorld() ফাংশনের জন্য variable sMessage-এর মান নির্ধারিত হয়নি। এই ফাংশন সম্পূর্ণভাবে sMessage-এর মান ধরে রাখতে হয়, যার মান পরবর্তীতে ফাংশনটি ব্যবহার করা হবে, অর্থাৎ, ইন্টারপ্রিটারটি জানে যে, function sayHelloWorld() ফাংশনটি ব্যবহার করার সময় sMessage-এর মান পরীক্ষা করতে হবে। sMessage-এর মান function sayHelloWorld() ফাংশনটির সর্বশেষ লাইন (শেষপদক্ষেপ) থেকে নির্ধারিত হবে, "hello world" বার্তা দেখাবে。
জটিল বুলক্লোজ প্রতিদর্শ
একটি ফাংশনের মধ্যে আরেকটি ফাংশন নির্বাহ করা বুলক্লোজকে আরও জটিল করে। যেমন:
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
এখানে, function addNum() ফাংশন doAdd() (বুলক্লোজ) নিয়ে গঠিত। অভ্যন্তরীণ ফাংশন একটি বুলক্লোজ, কারণ এটি বাইরের ফাংশনের iNum1, iNum2 এবং সার্বজনীন পরিমাণ iBaseNum-এর মান গ্রহণ করে। addNum() এর শেষ পদক্ষেপটিতে doAdd() ফাংশনটির আহ্বান করা হয়, দুটি প্রান্তিক পরিমাণ এবং সার্বজনীন পরিমাণকে যোগ করা হয় এবং তাদের সমষ্টি ফিরিয়ে দেওয়া হয়。
গুরুত্বপূর্ণ ধারণা হল, doAdd() ফাংশন কোনো প্রান্তিক পরিমাণ গ্রহণ করে না, এটি সম্পূর্ণভাবে পরিবেশ থেকে গ্রহণ করা মান ব্যবহার করে。
দেখা যায়, বুলক্লোজ এসসিএমএসএসের অত্যন্ত শক্তিশালী ও ব্যবহারিক অংশবিশেষ, জটিল গণনা করার জন্য ব্যবহার করা যায়。
সুঝাওয়া:যেমন যেকোনো একক ফাংশন ব্যবহার করা যায়, বুলক্লোজ ব্যবহার করার সময় খুবই দেখাশোনা করতে হবে, কারণ তারা খুবই জটিল হতে পারে。
- পূর্ববর্তী পৃষ্ঠা ফাংশন অবজেক্ট
- পরবর্তী পৃষ্ঠা ওয়ার্কসকিপ