শর্টকাটে শর্ট সার্কিট
শর্টকাটে কাজ সারতে পারলে কষ্ট কে করে। এই জন্য ডাটা রিলেটেড বেশ কিছু শর্টকাট জাভাস্ক্রিপ্টে আছে। তার অনেকগুলা আমরা আগেই আলোচনা করে ফেলছি। তা-ও কিছুটা এখন রিভিশন হয়ে যাবে।
বড় হওয়া সহজ না
কোনো একটা সংখ্যাওয়ালা ভেরিয়েবলের মান এক বাড়ানোর জন্য তুই ভেরিয়েবলের নাম, এরপর দুইবার প্লাস চিহ্ন দিতে পারস। তাহলে ইউজ করতে পারস। এইটা তুই আগে থেকেই জানস। তারপরেও নিচের কোড দেখ। দেখবি b-এর মান 5 আউটপুট দিচ্ছে। যদিও তুই a-এর পর দুইটা প্লাস চিহ্ন ঠিকই দিছস।
let a = 5;
let b = a++;
console.log(b);
Output: 5কারণ, let b = a++; দিলে আগে আগে a-র বর্তমান মান b-তে সেট হয়, তারপর a-এর মান 1 বাড়ে। তাই b মান 5 হয়ে গেছে।
এইটার সমাধান হচ্ছে pre-increment অর্থাৎ আগে ইনক্রিমেন্ট হবে।
let a = 5;
let b = ++a;
console.log(b);
Output: 6এইবার let b = ++a; লেখার কারণে আগে a-এর মান 1 বাড়ে। তারপর b-তে সেট হয়। তাই এইবার b মান 6 হবে।
সেইম জিনিসটা কিন্তু Decrement অর্থাৎ দুইটা মাইনাস চিহ্নের ক্ষেত্রেও হয়। সেখানেও Post-Decrement, আবার Pre-Decrement আছে। অর্থাৎ ভেরিয়েবল নামের আগে কমানো বা নামের পরে কমানোর বিষয় আছে এবং এই জিনিসটাও সেইমভাবে কাজ করে।
অ্যাসাইনমেন্ট শর্টকাট
যদি কোনো ভেরিয়েবলের সাথে অন্য কোনো সংখ্যা বা অন্য কোনো ভেরিয়েবলের যোগ, বিয়োগ, গুণ, ভাগ এবং ভাগশেষ করে সেটার রেজাল্ট সেই ভেরিয়েবলে সেট করছ, তাহলে +=, -=, *=, /=, %= এই শর্টকাটগুলা ইউজ করতে পারবি। নিচের মতো করে—
১. apples = apples + 5 না লিখে শর্টকাটে apples += 5; লিখতে পারবি
২. oranges = oranges - 8 না লিখে শর্টকাটে oranges -= 8; লিখতে পারবি
৩. bananas = bananas * 3 না লিখে শর্টকাটে bananas *= 3; লিখতে পারবি
৪. grapes = grapes / 4 না লিখে শর্টকাটে grapes /= 4; লিখতে পারবি
৫. mangoes = mangoes % 3 না লিখে শর্টকাটে mangoes %= 3; লিখতে পারবি
Logical AND Assign (&&=)
&&= হলো একধরনের শর্টকাট অপারেটর। একে বলে Logical AND Assignment Operator। এটা বলে, ভেরিয়েবল যদি সত্যি (truthy) হয়, তাহলে ভ্যালু চেইঞ্জ করে দিবি। আর ভেরিয়েবল যদি X মিথ্যা (falsy) কিছু হয় (যেমন 0, null, undefined, false, NaN, ""), তাহলে কিছুই করবে না।
let mango = 10;
mango &&= 5;
console.log(mango);
Output: 5কারণ, mango ভেরিয়েবল truthy ছিল, তাই এটা 5 হয়ে গেল।
আর যদি tomato ভেরিয়েবল falsy হয়—
let tomato = 0;
tomato &&= 5;
console.log(tomato);
Output: 0কারণ, tomato falsy ছিল, তাই এটা unchanged থেকে গেল।
Logical OR Assign(||=)
অন্যদিকে ||= হলো Logical OR Assignment Operator। এটা বলে, ভেরিয়েবল যদি মিথ্যা (falsy) হয়, তাহলে ভেরিয়েবলের ভ্যালু চেইঞ্জ করে দিবি। আর ভেরিয়েবল যদি truthy কিছু হয়, তাহলে কিছুই করবে না।
let money = 0;
money ||= 5;
console.log(money);
Output: 5কারণ, money ভেরিয়েবল falsy ছিল, তাই এটাকে 5 করে দিল।
আর যদি price ভেরিয়েবল truthy হয়—
let price = 10;
price ||= 5;
console.log(price);
Output: 10কারণ, price ভেরিয়েবল truthy ছিল, তাই এটা unchanged থেকে গেল।
Practice:
- একটি ভেরিয়েবল a-কে 59 সেট করে এর মান একবার post-increment এবং একবার pre-increment করে দেখ, আউটপুট কী হয়।
- oranges ভেরিয়েবলের প্রাথমিক মান 100 । oranges-কে 15 দিয়ে ভাগ কর এবং এই শর্টকাট অপারেটর ব্যবহার কর।
- একটি ভেরিয়েবল mango = 20। mango &&= 10 ব্যবহার করলে ভেরিয়েবলের নতুন মান কী হবে, কেন?
- bananas ভেরিয়েবলের মান 50। এর সাথে 4 গুণ করে সেই মানটি নিজেই ধরে রাখতে হলে কোন শর্টকাট অপারেটর ব্যবহার করবি?
- একটি truthy ভেরিয়েবল grapes = 19 দিয়ে ||= অপারেটর ব্যবহার করলে এর মান কী হবে এবং কেন?
- apples = apples - 10 এই স্টেটমেন্টটি শর্টকাট অপারেটর ব্যবহার করে লেখ।
- let price = undefined; এবং price ||= 90 ব্যবহার করে প্রমাণ কর যে, price-এর মান পরিবর্তিত হয়েছে।
- একটি falsy ভেরিয়েবল tomato = 0। এতে mango &&= 5 ব্যবহার করলে আউটপুট কী হবে এবং কেন?
- apples = 15 হলে, apples %= 6 ব্যবহার করলে আউটপুট কত হবে এবং সেটা কেন তত হবে?