জাভাস্ক্রিপ্টে ফাংশনাল এক্সপ্রেশনের সূক্ষ্মতা
ফাংশন এক্সপ্রেশন নামটি কোনো কারণে দেওয়া হয়নি। এটি সত্যিই বোঝায় - যে এই ধরনের ফাংশনগুলি কোনো এক্সপ্রেশনের অংশ।
উদাহরণস্বরূপ, আমরা একটি স্ট্রিং এবং একটি বেনামি ফাংশন যোগ করতে পারি:
let str = 'str' + function() {return 3;};
console.log(str); // দেখাবে 'strfunction() {return 3;}'
আমরা কেন এমন অদ্ভুত ফলাফল দেখি,
এবং সংখ্যাটি 3 নয়? কারণ দ্বিতীয় যোগফলটি
- এটি ফাংশনটির কাজের ফলাফল নয়, এর উত্স
কোড (যেহেতু আমরা ফাংশনটি কল করিনি, শুধু
লিখেছি)।
অর্থাৎ ফাংশনাল এক্সপ্রেশন নামটি বোঝায় যে এই ধরনের ফাংশন কোনো এক্সপ্রেশনে অংশগ্রহণ করে।
একটি ভেরিয়েবলে অ্যাসাইন করাও একটি এক্সপ্রেশন:
let func = function() {
console.log('!');
};
উদাহরণস্বরূপ, ফাংশনটিকে console.log এ একটি
প্যারামিটার হিসেবে পাস করা যেতে পারে এবং এটি কনসোলে
এর সোর্স কোড প্রিন্ট করবে - এটিও একটি
এক্সপ্রেশন হিসাবে বিবেচিত হবে:
console.log(function() {return 3;});
এটি কেন গুরুত্বপূর্ণ: কারণ ফাংশন ডিক্লারেশন এবং ফাংশন এক্সপ্রেশনের পার্থক্য মোটেও এটি নয় যে প্রথম ফাংশনটি একটি নাম সহ তৈরি হয়, এবং দ্বিতীয়টির শুরুতে কোনো নাম নেই। এটি সত্য নয়।
উদাহরণ। এখানে আমাদের একটি নামবিহীন ফাংশন আছে, কিন্তু এটি কোনো এক্সপ্রেশনে অংশ নেয় না (অর্থাৎ এর সাথে কোনো ক্রিয়া করা হয় না, সহজ কথায়):
/*
এই ফাংশনটি ফাংশন ডিক্লারেশন হবে,
কিন্তু একটি সিনট্যাক্স ত্রুটি সহ:
*/
function() {
console.log('!');
}
এই ধরনের কোড সাধারণত একটি ত্রুটি দেবে! কেন: কারণ ফাংশনটি কোনো এক্সপ্রেশনে অংশ নেয় না, ব্রাউজার এটিকে ফাংশন ডিক্লারেশন হিসাবে বিবেচনা করে, কিন্তু এর নাম খুঁজে পায় না এবং একটি ত্রুটি দেয়।
ত্রুটি দূর করতে, ফাংশনটিকে কোনো এক্সপ্রেশনের অংশ করতে হবে। উদাহরণস্বরূপ,
এর আগে + অপারেশন লিখি:
+function() { // এই ধরনের কোড সঠিক
console.log('!');
};
এটি কিভাবে কাজ করে: + অপারেশনটি নিজেই
কিছু করে না, এটি 3 সংখ্যার পরিবর্তে +3 লেখার মতো
- এটি অনুমোদিত,
কিন্তু কিছু পরিবর্তন করে না।
কিন্তু ফাংশনের ক্ষেত্রে - এটি পরিবর্তন করে। এখন আমাদের ফাংশনটি শুধু লেখা নেই, এটি একটি এক্সপ্রেশনে অংশ নিচ্ছে। সুতরাং এখন কোনো ত্রুটি হবে না। ফাংশনটি এক্সিকিউট করার ফলাফলও হবে না, যেহেতু আমরা এটি শুধু লিখেছি, কিন্তু কল করিনি।
+ এর পরিবর্তে যেকোনো কিছু লেখা যেতে পারে।
উদাহরণস্বরূপ:
-function() { // এই ধরনের কোড সঠিক
console.log('!');
};
!function() { // এই ধরনের কোড সঠিক
console.log('!');
};
আমরা ফাংশনটিকে বন্ধনীতে রাখতে পারি, এই ক্ষেত্রেও এটি একটি ফাংশনাল এক্সপ্রেশন হয়ে উঠবে:
(function() { // এই ধরনের কোড সঠিক
console.log('!');
});
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
function func() {
console.log('!');
}
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
let func = function() {
console.log('!');
}
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
+function() {
console.log('!');
}
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
!function func() {
console.log('!');
}
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
-function func() {
console.log('!');
}
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
1 + function func() {
console.log('!');
}
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রESSION:
(function func() {
console.log('!');
})
নির্ধারণ করুন, উপস্থাপিত ফাংশনটি ফাংশন ডিক্লারেশন নাকি ফাংশন এক্সপ্রেশন:
console.log(
function() {
console.log('!');
}
);