IIFE-এ নিরাপত্তার জন্য সেমিকোলন
এখন ধরি আমাদের অবিলম্বে ইনভোক করা ফাংশনটি শুরুতে প্লাস চিহ্নের বদলে বৃত্তাকার বন্ধনী দ্বারা আবদ্ধ, এভাবে:
(function() {
console.log(1); // 1 প্রিন্ট করবে
})();
ধরি ভেরিয়েবল num ফাংশনের বাইরে
সংজ্ঞায়িত করা হয়েছে:
let num = 1; // সেমিকোলন দেওয়া আছে
(function() {
console.log(num); // 1 প্রিন্ট করবে
})();
ধরি এখন আমরা সেমিকোলন দিতে ভুলে গেছি:
let num = 1
(function() {
console.log(num); //!! error দেবে
})();
দেখা যাচ্ছে যে, এই কোডটি একটি error দেবে, কারণ জাভাস্ক্রিপ্ট আমাদের ফাংশনটিকে প্রথম লাইনের কমান্ডের ধারাবাহিকতা হিসেবে গ্রহণ করে।
এই ধরনের সমস্যা এড়ানোর জন্য, অবিলম্বে ইনভোক করা ফাংশনের আগে সর্বদা সেমিকolon বসানো প্রয়োজন, এভাবে:
let num = 1
;(function() {
console.log(num); // 1 প্রিন্ট করবে
})();
মনে হতে পারে যে সমস্যাটি কিছুটা কৃত্রিম। আসলে, তা নয়। এমন পরিস্থিতি হতে পারে যে আপনার পৃষ্ঠায় বিভিন্ন ফাইল থেকে একাধিক স্ক্রিপ্ট সংযুক্ত করা হয়েছে। সেই ক্ষেত্রে একটি ফাইলের শেষে সেমিকোলন ব omission পড়ে থাকতে পারে এবং এটি স্বয়ংক্রিয়ভাবে সমস্যার সৃষ্টি করবে, যদি দ্বিতীয় ফাইলটি শুরু হয় অবিলম্বে ইনভোক করা ফাংশন দিয়ে।
সুতরাং, অবিলম্বে ইনভোক করা ফাংশনের আগে সর্বদা-সর্বদা সেমিকোলন বসান, এমনকি যদি আপনি এই মুহূর্তে নিশ্চিত থাকেন যে সমস্যা হবে না। সেগুলি পরে দেখা দিতে পারে।
উপরে বলা বিষয়টি প্রয়োগ করি এবং অবিলম্বে ইনভোক করা ফাংশনটির শুরুতে সেমিকোলন বসিয়ে কল করি:
;(function() {
console.log(1); // 1 প্রিন্ট করবে
})();
কód রান না করে নির্ধারণ করুন কী কনসোলে প্রিন্ট হবে:
let str = 'str';
(function() {
console.log(1);
})();
কód রান না করে নির্ধারণ করুন কী কনসোলে প্রিন্ট হবে:
let str = 'str'
(function() {
console.log(1);
})();