Q15. What is an immediately invoked function expression (IIFE)?
সঙ্গে সঙ্গে চালানো ফাংশন কী, কেন ব্যবহার হয় এবং ES6-এর আরও পরিষ্কার উপায়।
IIFE হলো এমন একটি function expression যাকে ঘোষণার সঙ্গে সঙ্গে ডাকা হয় — অর্থাৎ ফাংশনটি তৈরি হওয়ার সঙ্গে সঙ্গেই চলে এবং তার ফলত্র ফেরত আসে।
(function () {
console.log("সঙ্গে সঙ্গে চলছে");
})();
(function (name) {
return "হ্যালো, " + name;
})("Rahim"); // "হ্যালো, Rahim"ধাপে ধাপে বুঝি — প্রথমে function () {} একটি expression, তাই তার নাম থাকে না এবং উপরের বন্ধনীতে ঢেঁকে function কীওয়ার্ড হিসেবে পড়ে না। তারপর শেষের () ফাংশনটিকে ডাকে এবং ফলত্র পরের কোডে ব্যবহার করা যায়।
আগে এটা অনেক বেশি ব্যবহার হতো, কারণ এতে নিজস্ব scope তৈরি হতো — বাইরের কোনো ভেরিয়েবল ভেতরে ঢুকে যেত না, আবার বাইরে leak-ও হতো না।
// আগের দিনের IIFE
(function () {
var secret = "শুধু ভেতরে";
function init() {
console.log(secret); // কাজ করে
}
init();
})();
console.log(secret); // ReferenceError — বাইরে নেইES6-তে arrow function আসার পর IIFE আরও ছোট হয়ে গেছে, তবু সেটি এখনো লিখতে হয়।
(() => {
const secret = "শুধু ভেতরে";
console.log(secret);
})();
// semicolon লাগে, নইলে আগের লাইনের সাথে জোড়া লেগে যায়
const a = 5
;(function () {
console.log("ok");
})();// return value ব্যবহার করা
const config = (function () {
return { mode: "production" };
})();
console.log(config.mode); // "production"| বিষয় | Function IIFE | Arrow IIFE |
|---|---|---|
| লেখার ধরন | বেশি লম্বা | এক লাইন |
নিজস্ব this | আছে | ধার করে |
| ব্যবহার | পুরোনো কোডে | আধুনিক কোডে |
ES module-এ প্রতিটি ফাইলের নিজস্ব scope থাকে, তাই ব্রাউজারে নিজস্ব scope বানাতে আর IIFE-এর দরকার কমে গেছে। তবে library বা পুরোনো পরিবেশে এখনো কাজে লাগে।