২০ অক্টোবর, ২০২২
পড়তে মিনিট লাগতে পারে

নিত্যদিনের জাভাস্ক্রিপ্টঃ কন্ডিশনাল/টার্নারি (Ternary) অপারেটর

শেয়ার করুনঃ

কন্ডিশনাল বা টার্নারি অপারেটর প্রায় ক্ষেত্রে if else স্টেটমেন্ট এর পরবর্তিতে শর্টকাট হিসেবে ব্যবহার করা হয়। শর্টকাটে একলাইনে একটা সিদ্ধান্তের উপর ডিশিসন নিয়ে ফেলা যায়। এই অপারেটর অনেকটা এভাবে কাজ করেঃ

কন্ডিশন ? কন্ডিশন যদি সত্য হয় তাহলে এটা : কন্ডিশন যদি মিথ্যা হয় তাহলে এটা

এখানে এই যে স্পেশাল দুইটা জিনিস ? এবং : দেখতেছেন, এগুলোই মূলত এখানে ব্যবহার হয়।

ধরি নিচে একটা ভ্যারিয়েবল আছেঃ

const age = 21;

এখন এই age এর উপর ডিপেন্ড করে আমরা একটা লেখা প্রিন্ট করতে চাই। যদি age ১৮ এর নিচে হয় তাহলে একটা লেখা, আর যদি ১৮ বা ১৮ এর উপর হয় তাহলে আরেকটা লেখা প্রিন্ট করবো। এটা আমরা if else ব্যবহার করে এভাবে করতে পারিঃ

if(age < 18) {
   console.log('You are not Adult!');
} else {
   console.log('You are Adult');
}

কিন্তু সেইম কাজটাই আমরা টার্নারি অপারেটর ব্যবহার করে মাত্র একলাইনেই করতে পারিঃ

console.log(age < 18 ? 'You are not Adult!' : 'You are Adult');

এবার এটা রান করলে দেখবেন সেইম আউটপুটইঃ

এটা যেকোনো জায়গায় যেকোনোভাবে ব্যবহার করতে পারবেনঃ

function findAuthor(name) {
   return(name === 'Zonayed Ahmed' ? 'This is the author' : 'Some other person');
}

এখন এই ফাংশন টাকে আর্গুমেন্ট দিয়ে কল করলে এটা আর্গুমেন্ট অনুযায়ী ফলাফল দেখাবেঃ

console.log(findAuthor('Zonayed Ahmed'));

অন্যকিছু দিলেঃ

console.log(findAuthor('John Doe'));

রিয়েল লাইফে এটা কিভাবে কাজে লাগতে পারে? হ্যাঁ ধরুন আপনি আপনার ইউজারকে ইমেইল দিতে বলছেন। ইমেইল দিয়ে সাবমিট করলে আপনি এই ফাংশনটা রান করবেনঃ

function successFunc() {
   console.log('Got your email');
}

ইমেইলটা আপনি এরকম একটা ভ্যারিয়েবল স্টোর করবেনঃ

let email;

এখন ইউজার ইমেইল না দিলেই সাবমিট ক্লিক করে দিলে আপনি টার্নারি অপারেটর ইউজ করে খুব সহজেই ধরে ফেলতে পারবেন, আর অন্যকিছু দেখাতে পারবেন। ধরি এখানে আমরা জাস্ট একটা কন্সোল লগই দেখালামঃ

email ? successFunc() : console.log('Please provide your email!');

এটা কিভাবে হলো? হ্যাঁ এটা হয়েছে কারণ এখানে email মিথ্যা false তাই। তাহলে দেখি এখানে email টা কি কারণে মিথ্যা false ভ্যালু দিলোঃ

console.log(email);

আচ্ছা ইমেইল তাহলে এখানে undefined হ্যাঁ, ঠিক তাই। কারণ আমাদের ইউজার ইমেইল দেয় নাই। আর আমরা জানি undefined মিথ্যা false । গত পর্বে আমরা দেখেছিলাম জাভাস্ক্রিপ্ট এ কিছু থাকলেই সেটা সত্য, শুধুমাত্র নিচের এগুলো ছাড়াঃ

  • false (বুলিয়ান false, নিজেই মিথ্যা)
  • null
  • NaN
  • 0
  • খালি ("" , ''অথবা ``);
  • undefined
  • !anythingTrue (সত্য কোনো এক্সপ্রেশনের পূর্বে ! দিয়েও সেটাকে মিথ্যা করা যায়)

আর তাই এখানে email মিথ্যা।

এবার যদি ইউজার ইমেইল দেয়ঃ

email = '[email protected]';

দেওয়ায়র পর সাবমিট করলো, এবার আমরা আবার আবার দেখিঃ

email ? successFunc() : console.log('Please provide your email!');

ব্যাস, এবার দেখবেন আপনার ফাংশনটা রান করবেঃ

এখন ভাইয়া এখানে ইমেইল, ইমেইল সাবমিট-টাবমিট আসলো কোথা থেকে… হ্যাঁ এখানে এগুলো সব কাল্পনিক হলেও রিয়েল লাইফ প্রোজেক্ট করতে গেলে এরকম সিচুয়েশনেই পড়বেন আর ঠিক এভাবেই টার্নারি অপারেটর ব্যবহার করে সহজেই একলাইনেই কাজ সেরে ফেলতে পারবেন।

এখন টার্নারি অপারেটর কিন্তু একটা ভিতরেও আরেকটা দিতে পারবেন, যতক্ষন ইচ্ছা দিতে পারবেন রুলস মেইন্টেইন করে। ধরি আমাদের নিচে এরকম একটা অবজেক্ট আছেঃ

const objTer = {
   name: 'Zonayed Ahmed',
   age: 21,
   job: 'Student'
}

এখন ধরি আমরা এখানে যদি objTer এর name এবং age

objTer.name ? objTer.age ? console.log('It has name and age') : objTer.job ? console.log('yes it has a job') : console.log('no it does not have any job') : console.log('I does not have any name');

এটা রান করালেঃ

অনেক বড় লাইন ঠিক না? এটাকে একটু ভেঙ্গে ভেঙ্গে দেখলেই ধারণা পাবেন। আসলে এভাবেও চাইলে আপনি অনেকগুলো টার্নারি অপারেটর একসাথে নিয়ে একটা ভিতরে আরেকটা দিয়ে কাজ করতে পারবেন। প্রয়োজনে ব্র্যাকেটসও ব্যবহার করতে পারবেন। এটাও আরেকটা পাওয়ারফুল টেকনিক।

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

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

জাভাস্ক্রিপ্ট ব্যাসিক
জাভাস্ক্রিপ্টঃ কি, কেন, কখন? জাভাস্ক্রিপ্টঃ কোথায় এবং কিভাবে ইউজ করা হয়? জাভাস্ক্রিপ্টঃ ব্যাসিক ক্রোম ডেভেলপার কন্সোল জাভাস্ক্রিপ্টঃ ভ্যারিয়েবল এবং ডাটা টাইপ জাভাস্ক্রিপ্টঃ অপারেটর নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ কন্ডিশনাল স্টেটমেন্ট নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ লুপ নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ অ্যারে নিয়ে সবকিছু জাভাস্ক্রিপ্টঃ ব্যাসিক অবজেক্ট জাভাস্ক্রিপ্টঃ ব্যাসিক ফাংশন জাভাস্ক্রিপ্টঃ স্টেটমেন্ট আর এক্সপ্রেশন জাভাস্ক্রিপ্টঃ ড্রাই প্রিন্সিপ্যাল জাভাস্ক্রিপ্টঃ নাকি ইকমাস্ক্রিপ্ট? জাভাস্ক্রিপ্টঃ বিহ্যাইন্ড দ্যা সীন জাভাস্ক্রিপ্টঃ হোইস্টিং(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