২৪ সেপ্টেম্বর, ২০২২
পড়তে মিনিট লাগতে পারে

জাভাস্ক্রিপ্ট ইএস ৬(ES6):ইফি (Immediately Invoked Function Expressions)

শেয়ার করুনঃ

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

প্রাইভেসি মেইন্টেইন করতে চাইলে বা আপনি যদি চান কোনো ফাংশনের ভিতরের ডাটা বাইরে এক্সপোজ করতে না চান তাইলে ইফি খুব ভালোভাবে কাজে লাগতে পারে। যেমনঃ

(function aDemoFunc() {
   var msg = 'Hello World';  
   console.log(msg);
})();

এটা সরাসরিই আউটপুট দিবেঃ

এখন এর বাইরে যদি এই ফাংশনটাকে আবার কল করতে চাই তাহলে এটা এরর দেখাবেঃ

aDemoFunc();

সেইমভাবে যদি আমরা ভ্যারিয়েবল msg টাকেও অ্যাক্সেস করতে চাই, সেটাও অসম্ভবঃ

console.log(msg);

ইফি ইউজ করে এরকমভাবেই প্রাইভেট ফাংশন এবং সেই সাথে প্রাইভেট ভ্যারিয়েবল ক্রিয়েট করা যায়।

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

{
   let a = 5;
   let b = 10;
   const pi = 3.1416;
   console.log(a + b + pi);
}

এরা ঠিকঠাক মতো আউটপুট দেখাবেঃ

কিন্তু এখন যদি আমরা এই ভ্যারিয়েবলগুলোকে এই {} ব্র্যাকেটসগুলোর বাইরে থেকে অ্যাক্সেস করতে চাই তাহলে এরর আসবেঃ

{
   let a = 5;
   let b = 10;
   const pi = 3.1416;
}
console.log(a + b + pi);

সেইমভাবে ফাংশনের ক্ষেত্রেও। আমরা যদি var দিয়ে ডিক্লেয়ার করে ফাংশন এক্সপ্রেশন নেই তাহলে সেটার স্কোপ var এর স্কোপ মতেই হবে। এই ফাংশনকে এই{} ব্র্যাকেটস এর ভিতরে রাখার পরও দেখবেন বাইরে থেকে অ্যাক্সেস করা যাচ্ছেঃ

{var myName = function() {
 var a = 'Zonayed Ahmed';
 console.log(a);
}}

myName();

এটা ঠিকঠাক আউটপুট দেখাবেঃ

কিন্তু সেইম ফাংশনটাকেই যদি আমরা let বা const দিয়ে ডিক্ল্যেয়ার করে নেই, তাহলে সেটা প্রাইভেট ফাংশন হয়ে যাবে ব্লক স্কোপিং এর কারনেঃ

{const myName6 = function() {
 const a = 'Zonayed Ahmed';
 console.log(a);
}}myName6();

এটা এরর আসবেঃ

এভাবেই আপনি ইএস ৬ এ খুব সহজেই ইফির ফাংশানালিটি পেয়ে যাবেন।

ট্যাগঃ
শেয়ার করুনঃ

ক্রমানুসারে এই জাভাস্ক্রিপ্ট সিরিজঃ

জাভাস্ক্রিপ্ট ব্যাসিক
জাভাস্ক্রিপ্টঃ কি, কেন, কখন? জাভাস্ক্রিপ্টঃ কোথায় এবং কিভাবে ইউজ করা হয়? জাভাস্ক্রিপ্টঃ ব্যাসিক ক্রোম ডেভেলপার কন্সোল জাভাস্ক্রিপ্টঃ ভ্যারিয়েবল এবং ডাটা টাইপ জাভাস্ক্রিপ্টঃ অপারেটর নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ কন্ডিশনাল স্টেটমেন্ট নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ লুপ নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ অ্যারে নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ ব্যাসিক অবজেক্ট জাভাস্ক্রিপ্টঃ ব্যাসিক ফাংশন জাভাস্ক্রিপ্টঃ স্টেটমেন্ট আর এক্সপ্রেশন জাভাস্ক্রিপ্টঃ ড্রাই প্রিন্সিপ্যাল জাভাস্ক্রিপ্টঃ নাকি ইকমাস্ক্রিপ্ট? জাভাস্ক্রিপ্টঃ বিহ্যাইন্ড দ্যা সীন জাভাস্ক্রিপ্টঃ হোইস্টিং(Hoisting) নিয়ে ধারণা জাভাস্ক্রিপ্টঃ স্কোপ(Scope) নিয়ে ধারণা জাভাস্ক্রিপ্টঃ ক্লোজারস(Closures) নিয়ে ধারণা জাভাস্ক্রিপ্টঃ ইফি, Immediately Invoked Function Expressions (IIFE)
জাভাস্ক্রিপ্ট অ্যাডভান্স
জাভাস্ক্রিপ্ট অ্যাডভান্সঃ ‘this’ কীওয়ার্ড জাভাস্ক্রিপ্ট অ্যাডভান্সঃ call(), bind() এবং apply() মেথড জাভাস্ক্রিপ্ট অ্যাডভান্সঃ অবজেক্ট ওরিয়েন্টেড জাভাস্ক্রিপ্ট জাভাস্ক্রিপ্ট অ্যাডভান্সঃ ফাংশন কন্সট্রাকটর(Constructor) এবং ‘new’ কীওয়ার্ড জাভাস্ক্রিপ্ট অ্যাডভান্সঃ ইনহেরিট্যান্স (Inheritance) জাভাস্ক্রিপ্ট অ্যাডভান্সঃ স্ট্রিক্ট (Strict) মোড
জাভাস্ক্রিপ্ট ইএস ৬(ES6)
জাভাস্ক্রিপ্ট ইএস ৬(ES6): নতুন কি আছে? জাভাস্ক্রিপ্ট ইএস ৬(ES6): let এবং const দিয়ে ভ্যারিয়েবল ডিক্লেয়ার করা জাভাস্ক্রিপ্ট ইএস ৬(ES6):ইফি (Immediately Invoked Function Expressions) জাভাস্ক্রিপ্ট ইএস ৬(ES6): টেমপ্লেট লিটারেল(Template Literal) ও স্ট্রিং মেথড জাভাস্ক্রিপ্ট ইএস ৬(ES6): অ্যারো (Arrow) ফাংশন ও লেক্সিক্যাল(Lexical) ‘this’ কীওয়ার্ড জাভাস্ক্রিপ্ট ইএস ৬(ES6): অ্যারে জাভাস্ক্রিপ্ট ইএস ৬(ES6): স্প্রেড(Spread) অপারেটর জাভাস্ক্রিপ্ট ইএস ৬(ES6): ডি-স্ট্রাকচারিং (Destructuring) জাভাস্ক্রিপ্ট ইএস ৬(ES6): রেস্ট(Rest) প্যারামিটার জাভাস্ক্রিপ্ট ইএস ৬(ES6): ডিফল্ট(Default) প্যারামিটার জাভাস্ক্রিপ্ট ইএস ৬(ES6): ম্যাপ (Map) জাভাস্ক্রিপ্ট ইএস ৬(ES6): ক্লাস (Class) জাভাস্ক্রিপ্ট ইএস ৬(ES6): ক্লাস ও ইনহেরিট্যান্স (Inheritance) জাভাস্ক্রিপ্ট ইএস ৬(ES6): সব ইনভারোমেন্ট এ ইএস৬
নিত্যদিনের জাভাস্ক্রিপ্ট
নিত্যদিনের জাভাস্ক্রিপ্টঃ ফার্স্ট ক্লাস ফাংশন ও হাইয়ার অর্ডার ফাংশন নিত্যদিনের জাভাস্ক্রিপ্টঃ map(), filter() ও reduce() নিত্যদিনের জাভাস্ক্রিপ্টঃ some() ও every() মেথড নিত্যদিনের জাভাস্ক্রিপ্টঃ অবজেক্ট এ লুপ চালানো নিত্যদিনের জাভাস্ক্রিপ্টঃ ডট নোটেশন এবং ব্র্যাকেট নোটেশন নিত্যদিনের জাভাস্ক্রিপ্টঃ ম্যাথ (Math) অবজেক্ট নিত্যদিনের জাভাস্ক্রিপ্টঃ ডেট (Date) অবজেক্ট নিত্যদিনের জাভাস্ক্রিপ্টঃ লজিক্যাল অপারেটর অর (।।) এবং অ্যান্ড (&&) নিত্যদিনের জাভাস্ক্রিপ্টঃ কন্ডিশনাল/টার্নারি (Ternary) অপারেটর নিত্যদিনের জাভাস্ক্রিপ্টঃ রেগুলার এক্সপ্রেশন (Regular Expression) নিত্যদিনের জাভাস্ক্রিপ্টঃ এরর হ্যান্ডলিং (Error Handling) নিত্যদিনের জাভাস্ক্রিপ্টঃ ডেভেলপার কন্সোল (Console) নিত্যদিনের জাভাস্ক্রিপ্টঃ অ্যাসিনক্রোনাস (Asynchronous) নিত্যদিনের জাভাস্ক্রিপ্টঃ কলব্যাক(Callback) ফাংশন নিত্যদিনের জাভাস্ক্রিপ্টঃ প্রমিস (Promise) নিত্যদিনের জাভাস্ক্রিপ্টঃ async এবং await