Expression vs. Statement

Expression এবং Statement এর মধ্যে আমরা প্রোগ্রামাররা অনেক কনফিউশনে থাকি। এই আর্টিকেলের উদ্দেশ্য ছোট একটা ওভারভিউর মাধ্যমে বিষয়টা ক্লিয়ার করা।

Expression and Statement এর মধ্যে বেসিক যে পার্থক্য সেটা হলো এক্সপ্রেশন দিন শেষে কিছু না কিছু রিটার্ন করে, ডাটা প্রোডিউস করে, এবং একে কোনো এক জায়গায় স্টোর করে রাখা যায়। সেই হিসেবে ফাংশন কল এক ধরণের এক্সপ্রেশন। আর স্টেটমেন্ট কোনো ডাটা প্রোডিউস করেনা, কোথাও স্টোর করে রাখা যায় না, কিছু রিটার্ন করে না। ফাংশন লেখা হচ্ছে স্টেটমেন্ট, আর ফাংশন কল হচ্ছে এক্সপ্রেশন। কারণ ফাংশন লিখলে তা কিছু রিটার্ন করে না যতক্ষণ পর্যন্ত কল করা না হচ্ছে। আবার যদি অ্যারো ফাংশন লেখা হয় সেটা এক্সপ্রেশন কারণ সেটাকে একটা ভ্যারিয়েবলে স্টোর করে রাখা হচ্ছে। কিছু উদাহরণ দেখা যাক।

const name1 = 'Rayhan'; // Statement
const name2 = 'Alvi'; // Statement
const name3 = 'Anik'; // Statement
const name4 = 'Arjun'; // Statement
const name5 = 'Ayman'; // Statement

এগুলো সব স্টেটমেন্ট। কারণ এরা কিছু রিটার্ন করছে না।

const students = [
    'Rayhan',
    'Alvi',
    'Anik',
    'Arjun',
    'Ayman',
    'Ayuub',
    'Bidyut',
]; // Statement

console.log(students[0]); // Expression
console.log(students[1]); // Expression
console.log(students[2]); // Expression
console.log(students[3]); // Expression
console.log(students[4]); // Expression

for (let i = 0; i < students.length; i++) {
    console.log(students[i], students[i].toLowerCase()); // Expression
} // Statement

প্রথমটা ছিল স্টেটমেন্ট। কারণ তা কোনো কিছু রিটার্ন করছে না। console.log() হচ্ছে এক্সপ্রেশন কারণ তা কিছু না কিছু রিটার্ন করছে। ফর লুপ স্টেটমেন্ট। কারণ তা কিছু রিটার্ন করছে না। তবে লুপের ভিতরের console.log() এক্সপ্রেশন।

function nameOfFunction(name) {
    if (!name) {
        console.log('Please provide your name');
    } else {
        console.log('Hello', name);
    }
} // Statement

ফাংশন এভাবে লিখলে তা ফাংশন স্টেটমেন্ট। কারণ তা কিছু রিটার্ন করছে না যতক্ষণ না কল করা হচ্ছে।

const nameOfFunction = function (name) {
    if (!name) {
        console.log('Please provide your name');
    } else {
        console.log('Hello', name);
    }
} // Expression

কিন্তু এভাবে লিখলে তা এক্সপ্রেশন। কারণ ফাংশনকে ভ্যারিয়েবলে স্টোর করে রাখা হয়েছে।

nameOfFunction('Murshed'); // Expression
nameOfFunction('Fahim'); // Expression
nameOfFunction(); // Expression

কোনো ফাংশন কল করা হলো এক্সপ্রেশন। কারণ কল করলে তা কিছু না কিছু রিটার্ন করবেই। যদি রিটার্ন করার মতো কিছু না থাকে তাহলে অন্তত undefined রিটার্ন করবে।

function generateRandomNumber(min = 1, max) {
    const randomNumber = Math.floor(Math.random() * min + (max - min)); // Statement
    return randomNumber; // Expression
} // Statement

console.log(generateRandomNumber(5, 10)); // Expression

শেষ উদাহরণ। ফাংশন স্টেটমেন্ট, এর ভিতরের randomNumber ভ্যারিয়েবল স্টেটমেন্ট, Math.floor(Math.random() * min + (max - min)) এক্সপ্রেশন, return randomNumber এক্সপ্রেশন, console.log(generateRandomNumber(5, 10)) এক্সপ্রেশন।

আশা করি কিছুটা হলেও বুঝা গেছে এক্সপ্রেশন আর স্টেটমেন্টের মধ্যে পার্থক্য। 😊😊