Skip to content

Chapter 9: JavaScript Function-জাভাস্ক্রিপ্ট ফাংশন

9-1: function নো টেনশন

Function Introduction

তোর ছোট ভাইকে তুই মশারি টাঙাতে, পানি এনে দিতে, ফ্যানের সুইচ বন্ধ করতে বললে তাকে কিন্তু প্রতিদিন শিখাই দিতে হয় না, কীভাবে মশারি টাঙাতে হয় বা কীভাবে পানি এনে দিতে হয়। হয়তো একদিন তোর আম্মু বা অন্য কেউ শিখাই দিছিল, তারপর থেকে তাকে যতবার বলা হয় পানি এনে দিতে, সে ততবার সেই একই কাজ করে ফেলতে পারে।

প্রোগ্রামিংয়ের ক্ষেত্রেও এমন একটা মজার জিনিস আছে। যেটাকে বলে ফাংশন। ফাংশন বলতে যেকোনো একটা নির্দিষ্ট কাজ মনে করতে পারস। যেটা একবার কোড করে ফেললে এইটাকে যখন দরকার, জাস্ট বললেই সেই কাজ বারবার করে ফেলা যায়।

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

প্রোগ্রামিংয়ের মধ্যে ফাংশন একটা গুরুত্বপূর্ণ বিষয়। ফাংশনের মাধ্যমে বারবার ব্যবহার করা যাবে, তুই এমন কিছু কোড আগে থেকে তৈরি করে রাখতে পারবি। তারপর যখন দরকার, তখন সেই ফাংশনকে ডাক দিলে বা কল করলে সেই নির্দিষ্ট কাজ বারবার করতে পারবি।

আরেকটু সিম্পলভাবে বললে, ফাংশন হচ্ছে একটা block of code (অনেকগুলা কোডের লাইনের একটা সমষ্টি), যেটার একটা নাম থাকে, আর ওই নাম ধরে ডাক দিলে সেই নির্দিষ্ট কাজটা করে ফেলে।

ফাংশন ডিক্লেয়ার করা খুবই সোজা। প্রথমে function লিখবি, তারপর ফাংশনের নাম দিবি, ঠিক ভেরিয়েবলের মতো। এরপর প্রথম ব্র্যাকেট ( ) এবং সেটার ভিতরে এক বা একাধিক জিনিস লেখা থাকতে পারে। আবার নাও থাকতে পারে। যদি থাকে, তাহলে এদেরকে প্যারামিটার (parameter) বলে। প্যারামিটার নিয়ে একটু পরে বিস্তারিত বলতেছি।

তবে প্রথম ব্র্যাকেট শেষ হওয়ার পর থাকে দ্বিতীয় ব্র্যাকেট { }, যার ভিতরে এক বা একাধিক লাইন কোড থাকবে। নিচে ফাংশনের স্ট্রাকচার দেখলে বুঝতে পারবি, ফাংশন দেখতে কীরকম।

javascript
function fanOffKor() {
  console.log("bosha theke uthe dara");
  console.log("walk toward the switch");
  console.log("click the switch to off of the fan");
}

ফাংশন ডিক্লেয়ার করার বিষয়টা তো হালকা হলেও দেখতে পারছস। তবে শুধু ফাংশন ডিক্লেয়ার করলে কাজ হবে না; বরং ডাক দিয়া ফাংশনের কাজ করাইতে হবে। মানে, মশারি টাঙানোর কাজ জানলেই হবে না, ডাক দিয়া বলতে হবে— মশারি টাঙা। তাইলে তোর ছোটভাই মশারি টাঙানোর কাজটা করবে। ফাংশনের ক্ষেত্রেও সেইম বিষয়। ডিক্লেয়ার করে খুশি হলে কাজ হবে না। ফাংশনটাকে ডাক দিতে হবে, কল করতে হবে।

এখন ফাংশনটা কীভাবে ডাক দিবি? খুবই সোজা। জাস্ট ফাংশনের নাম লিখে তারপরে প্রথম ব্র্যাকেট দিলেই ফাংশন কল হয়ে যায়।

javascript
function fanOffKor() {
  console.log("bosha theke ute dara");
  console.log("walk toward the switch");
  console.log("click the switch to off of the fan");
}

fanOffKor();

ফাংশনের একটা সুপার পাওয়ার হইল— তুই একবার লিখেই এইটা দিয়ে একই কাজ বারবার করাতে পারবি।

javascript
function vaatKhao() {
  consolo.log("hand wash kore asho");
  consolo.log("bosho");
  consolo.log("plate e khabar dhabar nao");
  consolo.log("gopat gopat kore khao");
}
vaatKhao();

আর ফাংশনের নাম লেখার বা ডিক্লেয়ার করার সিস্টেম ভেরিয়েবলের নাম লেখার মতোই— এক শব্দে লিখতে হবে। কোনো গ্যাপ দিতে পারবি না। সংখ্যা দিয়ে শুরু হবে না। তবে প্রথম ক্যারেক্টারের পরের সংখ্যা দিতে পারবি ইত্যাদি ইত্যাদি।

এখন পর্যন্ত ফাংশন নিয়ে দুইটা জিনিস বললাম—

ফাংশন কীভাবে ডিক্লেয়ার করতে হয়।

ফাংশনকে কীভাবে কল করতে হয়।

JavaScript Function Practice:

  1. জুস খাও নামে একটা ফাংশন লিখ। যেটাকে কল করলে আউটপুট দিবে— এই নাও লেবুর জুস।
  2. এখন myRoutine নামে একটা ফাংশন লিখ। এইটার ভিতরে থাকবে, প্রতিদিন সকালে ঘুম থেকে উঠে তুই কী কী কাজ করস, সেগুলার লিস্ট। একটা একটা করে কাজের নাম এক একলাইনে কনসোল লগ দিয়ে লিখবি।
  3. তোর পরিবারের জন্য একটা ফাংশন লিখ। তুই যেকোনো একটা নাম দে। তারপর এইটার মধ্যে তোর যত পরিবারের সদস্য আছে, তাদের নাম এক এক করে আউটপুট করে দেখাবি।
  4. একটা taskDone নামে ফাংশন লিখ। ফাংশনটাতে তোর সারাদিনের ৫টা কাজ একেক লাইনে কনসোল লগ দিয়ে দেখা।
  5. greetMe নামে ফাংশন লিখ। ফাংশন কল করলে আউটপুটে আসবে Good Morning! Have a great day!
  6. তোর সবচেয়ে ক্লোজ তিন বন্ধুর নাম দেখানোর জন্য getFavFriends নামে ফাংশন লিখ। তারপর সেটার ভিতরে তোর ক্লোজ তিন বন্ধুর নাম আউটপুট হিসেবে দেখাবি।
  7. introduceMyself নামে ফাংশন লিখ। ফাংশন কল করলে তোর নাম, বয়স, ঠিকানা, ফোন নাম্বার, উচ্চতা আর তোর প্রিয় খাবার আউটপুট হিসেবে দেখা।

9-2: এক লিটার parameter

Function Parameters

এক লিটার পানি থাকলে তুই কত কী যে করতে পারবি, বলে শেষ করা যাবে না। পানি তুই সরাসরি পান করতে পারবি। সেটার মধ্যে চিনি দিয়ে শরবত বানিয়ে খেতে পারবি। পানি দিয়ে রান্না করতে পারবি। পানি দিয়ে গোসল করতে পারবি। পানি বোতলে ভরে বিক্রি করতে পারবি। সুন্দরী কেউ তৃষ্ণার্ত হলে তাকে পানি দিয়ে তার মন জোগাড় করতে পারবি। অৰ্থাৎ এক পানি দিয়ে তুই অনেক অনেক কাজ করে ফেলতে পারবি।

একইভাবে একটা ফাংশন দিয়ে চাইলে অনেক অনেক কাজ করে ফেলতে পারবি। জাস্ট ফাংশন ডিক্লেয়ার করার সময় ফাংশনের নামের পরে প্রথম ব্যাকেটের ভিতরে এক বা একাধিক নাম দিয়ে দিবি। অনেকটা ভেরিয়েবলের নাম দেয়ার মতো। তবে ভেরিয়েবল ডিক্লেয়ার করার মতো const বা let লিখবি না; বরং সরাসরি নাম দিয়ে দিবি। যদি একটা নাম লিখস, তাহলে জাস্ট নাম লিখলেই হবে। আর যদি একাধিক নাম লিখস, তাহলে নামগুলার মাঝে একটা করে কমা দিতে হবে।

এইগুলাকে প্যারামিটার বললেও এইগুলা প্যারার কোনো মিটার সেট করবে না বা তোকে প্যারা দিবে না; বরং তোর লাইফের প্যারা কমিয়ে দিবে। তারপর ফাংশন কল করার সময় একেকবার একেক মান সেট করে এই ফাংশনকে কল করতে পারবি।

বিষয়টা একটা উদাহরণ দিলে একদম একলিটার পানির মতো পরিষ্কার হয়ে যাবে।

ধর, একটা ফাংশন ডিক্লেয়ার করলাম। এই ফাংশনের কাজ হবে, এইটাকে যে সংখ্যা দিবি, সেই সংখ্যাকে দ্বিগুণ করে ফেলবে। তো, এই যে দ্বিগুণ করার কাজ, এইটা কিন্তু আজীবন একটা নির্দিষ্ট সংখ্যা যেমন 5-কে সব সময় দ্বিগুণ করলে জিনিসটা ইফেক্টিভ হলো না; বরং যদি এই একই ফাংশনকে দিয়ে তুই চাইলে 5-কে দ্বিগুণ করতে পারবি। আবার মন চাইলে 442-কে দ্বিগুণ করতে পারবি। এমনকি 7892-কেও চাইলেই দ্বিগুণ করতে পারবি। অর্থাৎ মোটামুটি যেকোনো সংখাকেই তুই চাইলে দ্বিগুণ করতে পারবি। জাস্ট একটা ফাংশন দিয়ে।

তাহলে ফাংশনের একটা সুপার পাওয়ার বুঝতে পারবি। সেই সুপার পাওয়ার দেখার জন্য সিম্পলভাবে নিচের ফাংশনটা দেখ।

এইখানে ফাংশনের নামের পরে ব্র্যাকেটের ভিতরে number নামে একটা নাম লেখা আছে। এইটাই হচ্ছে doubleIt নামক ফাংশনের প্যারামিটার। এইটা একটা নাম দেয়া হলেও এইটার মান কিন্তু দেয়া নাই। এইটার মান হবে, যতবার এই ফাংশনকে কল করা হবে, ততবার ফাংশনের নাম লিখে প্রথম ব্র্যাকেটের ভিতরে এইটার মান সেট করে দিতে হবে।

যখন যে মান দিয়ে এই ফাংশনকে কল করা হবে, তখন সেটাই হবে এই number প্যারামিটারের (ভেরিয়েবল হিসেবেও চিন্তা করতে পারস বুঝার সুবিধার জন্য) মান। জাস্ট ফাংশনের নিচে খেয়াল করলে বুঝতে পারবি একবার, doubleIt-এর পরে 15 লেখা আছে। তারপরের লাইনে লেখা আছে doubleIt(88), মানে এইবার number ভেরিয়েবলের মান 88, আর এরপরের লাইনে লেখা আছে 873 অর্থাৎ সেইবার number প্যারামিটারের মান 873 হবে।

javascript
function doubleIt(number) {
  const doubled = number * 2;
  console.log(doubled);
}

doubleIt(15);
doubleIt(88);
doubleIt(873);

Output;
30;
176;
1746;

প্যারামিটার জিনিসটাকে লুপ ভেরিয়েবলের সাথে তুলনা করতে পারস। লুপ ভেরিয়েবল তুই ডিক্লেয়ার করস। বিশেষ করে for ... of লুপের ক্ষেত্রে। সেটা লুপ চলতে চলতে একেকবার একেক মান হিসেবে আছে। এইখানেও সিমিলার ব্যাপার-স্যাপার। একটা প্যারামিটার ডিক্লেয়ার করছস। তারপর যখন যে মান দিয়ে এই ফাংশনকে কল করবি, তখন সেটাই হবে এই প্যারামিটারের মান। ব্যস, এইটুকই ঘুরিয়ে-প্যাঁচিয়ে বলতেছি।

তাই যখন দেখবি doubleIt(15), তখন সে doubleIt ফাংশনের কাছে গিয়ে বলবে, এই নাও তোমার number প্যারামিটারের মান 15, এখন বাকি কাজ কর। তখন সে ফাংশনের ভিতরে ডুকে প্রথম লাইনেই পাবে const doubled = number * 2; এইটা দিয়ে সে number-এর মানকে 2 দিয়ে গুণ করবে। তারপর গুণফল doubled নামক একটা ভেরিয়েবলে রাখবে। এরপর সেটাকে console লগ করে আউটপুট দেখাবে।

একইভাবে বর্গ করার একটা ফাংশন দেখাচ্ছি। বর্গ (square) মানে কোনো একটা সংখ্যাকে সেই সংখ্যা দিয়ে গুণ করলে সেটার বর্গ বা square পাওয়া যায়।

javascript
function square(number) {
  const borgo = number * number;
  console.log('square of', number, 'is:', borgo);
}
square(4);
square(12);


Output:
square of 4 is: 16
square of 12 is: 144

ওপরের ফাংশন অলমোস্ট আগের মতোই। জাস্ট এইখানে যে প্যারামিটার নেয়া হইছে, সেটাকে সেটা দিয়েই গুণ করা হইছে। এরপর console লগ করার সময় একটু কমা দিয়ে দিয়ে কয়েকটা জিনিস কনসোল লগ করা হইছে। তুই চাইলে শুধু borgo সেটাকেই console লগ করতে পারতি। আমি জাস্ট একটু বেশি দেখায় দিলাম।

এতক্ষণ একটা প্যারামিটার হিসেবে ফাংশন কীভাবে ডিক্লেয়ার করে, সেটা দেখছস। তবে প্যারামিটার একটা না, অনেকগুলা হতে পারে। যদি দুইটা প্যারামিটার দরকার হয়, তাহলে প্যারামিটারের জায়গায় সেই নাম দিয়ে দিবি। আমি দিলাম num1 আর num2, তারপর ফাংশনের ভিতরে এই দুইটা প্যারামিটারকে যোগ করে যোগফল sum নামে একটা ভেরিয়েবলে রাখলাম। একটু খেয়াল করলে খুব সহজভাবেই বুঝতে পারবি—

javascript
function add(num1, num2) {
  const sum = num1 + num2;
  console.log(sum);
}
add(5, 71);

Output: 76;

এখন দেখ, কীভাবে অনেকগুলো সংখ্যা একসাথে যোগ করা যায়:

javascript
function addAll(a, b, c, d, e) {
  const total = a + b + c + d + e;
  console.log(total);
}
addAll(3, 4, 6, 7, 1);

Output: 21;

ফাংশন কল করার সময় যে মান দেয়া হয়, সেগুলাকে প্যারামিটারের মান বা আর্গুমেন্টস (arguments) বলে। আমি মাঝেমধ্যে ভুলে প্যারামিটারও বলে ফেলি। তবে ফাংশন কল করার সময় প্যারামিটারের মান যে সরাসরি লিখতে হবে, এমন কোনো কথা নাই। তবে চাইলে ভেরিয়েবলও বসানো যায়। সেই উদারহণ দেখবি পিতা ও পুত্রের বয়সের পার্থক্য বের করার একটা ফাংশনে।

javascript
function difference(num1, num2) {
  const diff = num1 - num2;
  console.log(num1, num2, 'difference is', diff);
}
const fatherAge = 40;
const myAge = 10;

difference(fatherAge, myAge);

Output:
40 10 'difference is' 30

এখানে যে বিষয়টা বলতেছি, তা হলো, তুই যে মানগুলো দিস, সেটা সরাসরি একটা সংখ্যা হতে পারে, আবার একটা ভেরিয়েবলও হতে পারে।

প্যারামিটার নিয়ে আর্গুমেন্ট

নিচের ফাংশনে দুইটা প্যারামিটার ডিক্লেয়ার করা হইছে। আমি যদি দুইটা প্যারামিটার দিয়ে এই ফাংশনকে কল দেই, সে দুইটার যোগফল করে রিটার্ন করে দিবে। এইটা নিয়ে কোনো সন্দেহ নাই। আমি যদি দুইটার বেশি প্যারামিটার দিয়ে এই ফাংশনকে কল করি, তাহলে সে প্রথম দুইটা প্যারামিটার নিয়ে সেটার যোগ করে আমাকে যোগফল দিবে। সেজন্য নিচে দেখতেছস, আমাকে 13 আউটপুট দিচ্ছে। যেটা প্রথম দুইটা প্যারামিটারের যোগফল। আর প্রথম দুইটা প্যারামিটার ছাড়া বাকি প্যারামিটারগুলা দিয়ে ফাংশনটাকে কল করেছি, সে বাকিগুলাকে ইগনোর করতেছে।

javascript
function addNumbers(a, b) {
  return a + b;
}
const result = addNumbers(5, 8, 9, 6);
console.log(result);

Output: 13;

এখন যদি তোর মনে হয়, কয়টা প্যারামিটার (আর্গুমেন্ট দিয়ে) ফাংশনকে কল করবে, সেটা কোনো ব্যাপার না। আমি সবগুলা পেতে চাই। তাহলে ফাংশনের ভিতরে একটা চমৎকার জিনিস আছে, সেটাকে বলে arguments, আর কোনো ফাংশনের ভিতরে arguments-কে কনসোল লগ করলে সেই ফাংশন কল করার সময় যত প্যারামিটার দেয়া হইছে, সব পেয়ে যাবি।

javascript
function addNumbers(a, b) {
  console.log(arguments);
  return a + b;
}
const result = addNumbers(5, 8, 9, 6);
console.log(result);

Output: [5, 8, 9, 6];
13;

এই arguments জিনিসটা অ্যারের মতো দেখতে হলেও এইটা কোনো অ্যারে না; বরং এইটাকে বলে অ্যারের মতো দেখতে অবজেক্ট (array like object), তবে তুই চাইলে arguments-এর ওপরে for in লুপ চালাতে পারবি। এমনকি লুপ করে প্রত্যেকটা উপাদান নিয়ে কোনো কাজ করতে পারবি। যেমন, আমি নিচে সবগুলা উপাদানের যোগফল বের করতেছি। তারপর যোগফলটাকে রিটার্ন করতেছি।

javascript
function addNumbers(a, b) {
  let sum = 0;
  for (const num of arguments) {
    sum = sum + num;
  }
  console.log(sum);
}
addNumbers(5, 8, 9, 6);

Output: 28;

এই আর্গুমেন্টস নিয়ে এখন আর্গুমেন্ট বা তর্কাতর্কি করার দরকার নাই। জাস্ট দেখছস আর ভুলে যা।

আর যেটুক ভুলবি না, সেটা হচ্ছে– ফাংশনে চাইলে এক বা একাধিক প্যারামিটার পাঠানো যায় এবং প্যারামিটারের মান চেইঞ্জ করে একই ফাংশনকে বারবার ইউজ করা যায়।

JavaScript Function Parameter Practice:

  1. পিতা ও পুত্রের বয়সের সমষ্টি বের করার একটা ফাংশন লিখ।
  2. তোর এক বন্ধু তোকে বলল ক্যালকুলেটর বানাতে, কিন্তু ক্যালকুলেটরে শুধু যোগ বা বিয়োগ করার অপশন থাকলে হবে না। একটা ফাংশন লিখ, যেখানে দুইটা সংখ্যার গুণ বের করে দেখাস। যেমন, যদি 20 আর 15 পাঠালে আউটপুট হবে 300।
  3. একটা ফাংশন লিখ, যেটা তিনটা সাবজেক্টের পরীক্ষার মার্কসের সমষ্টি তোকে দিবে।
  4. বয়স বের করার একটা ফাংশন লিখ। যেটাকে তুই তোর কোন বছর জন্ম, সেটা বলবি। তারপর ফাংশনের ভিতরে এই বছর থেকে তোর জন্মসাল বিয়োগ করলে তোকে বলবে, তুই কত বছর বুইড়া হইছস (মানে তোর বয়স কত হইছে)।
  5. তুই একটা দোকানে গেছিস, যেখানে প্রতিটা লাউ কেনার জন্য 35 টাকা লাগবে। এখন একটা ফাংশন লিখ, যা প্যারামিটার হিসেবে নিবে, তুই লাউয়ের জন্য কত টাকা দিতে চাস। তারপর ভাগ করে বলবে, তুই কয়টা লাউ কিনতে পারবি।
  6. একটি ফাংশন লিখ, যেখানে চারটা সংখ্যার গড় বের করবে।
  7. একজন দোকানদার প্রত্যেকটা আইটেমে 250 টাকা লাভ করে। একটা ফাংশন লিখ, যেখানে কোনো একটা জিনিসের কেনা দাম দিবি, তাহলে সে বিক্রির দাম (selling price) দিবে।
  8. একটি ফাংশন লিখ, তারপর সেই ফাংশনকে তোর জন্মসাল প্যারামিটার হিসেবে দিবি। তারপর সে বলে দিবে, কোন বছর তোর বয়স 100 বছর হবে।
  9. একটি ফাংশন লিখ, যেখানে প্যারামিটার হিসেবে দিবি, প্রতিদিন তুই কয় ঘণ্টা সময় মোবাইল ফোন ইউজ করস। তারপর সেই ফাংশন বের করবে, মাসে তুই কত ঘণ্টা সময় মোবাইল ফোন ইউজ করস। ধরে নে, এক মাসে 30 দিন হয়।

9-3: return করো: ফাংশনের প্রেম

ছোট ভাইকে মশারি টাঙাতে বললে সে মশারি টাঙিয়ে ঘুমিয়ে পড়ে। কখনোই মশারি টাঙাতে বললে মশারি টাঙানোর পর কোনো কিছু তোর হাতে এনে দেয় না। একইভাবে ফ্যান অন করতে বললে সে ফ্যান অফ করে, কিন্তু তোর হাতে কিছু এনে দেয় না। তবে পানি আনতে বললে পানি ঠিকই এনে তোর হাতে দেয় বা সিঙ্গারা আনতে বললে সিঙ্গারাও এনে তোর হাতে দেয়।

এখানে দুই ধরনের ঘটনা ঘটছে। একধরনের ঘটনা হচ্ছে, কাজ করতে বললে কাজটা করে ফেলে, কিন্তু তোর হাতে কিছু ফেরত দেয় না। যেমন মশারি টাঙানো, ফ্যান অফ কর। আবার আরেক ধরনের কাজ আছে, যেখানে কাজটা করতে বলে কাজ শেষ করে তোকে কিছু একটা ফেরত বা রিটার্ন দেয়। যেমন— পানি দে, সিঙ্গারা দে।

তুই যখন ফাংশন ব্যবহার করবি, তখনও এই দুই ধরনের ঘটনা ঘটতে পারে। একটা হচ্ছে, তুই ফাংশনকে কোনো কাজ করতে বলতে পারবি এবং তার একটি ফলাফল তোর দরকার হতে পারে। আবার এমন কাজও হতে পারে, যেখানে ফাংশন কেবল কাজ করবে, কিন্তু তোকে কোনো ফলাফল ফেরত দেবে না।

এইসব ঘটনা থেকে বোঝা যায়, কিছু কিছু সময় ফাংশন থেকে কিছু রিটার্ন আসবে, আবার কিছু সময় ফাংশন থেকে কিছুই রিটার্ন আসবে না বা দরকার নেই।

ধর, একটা ফাংশন তৈরি করলাম, যেটার কাজ হচ্ছে একটি সংখ্যা দেওয়ার পরে সেটা আমাকে 10 গুণ করে দিবে।

এখন আমি যদি সেটাকে অন্য কাজে ব্যবহার করতে চাই, তখন ফাংশনের ভিতরে একটি স্পেশাল কি-ওয়ার্ড ব্যবহার করব, সেটি হচ্ছে return।

return-এর পরে যেকোনো একটা ভেরিয়েবল লিখতে পারবি বা কোনো মান লিখতে পারবি।

নিচের ফাংশনের ভিতরে দেখবি, return-এর পরে result ভেরিয়েবলটা লেখা আছে, তাহলে এই ফাংশনকে কল করলে সেই result ভেরিয়েবলের মান রিটার্ন করে দিবে।

এইবার এই ফাংশনকে কল করার কাজটা হবে একটা ভেরিয়েবলের ডানপাশে। যাতে ফাংশনকে কল করলে যেটা রিটার্ন করবে, সেটা ভেরিয়েবলের মান হিসেবে সেট হয়ে যায়। এরপর চাইলে সেই ভেরিয়েবলকে অন্য অনেক কাজে লাগাতে পারবি।

javascript
function tenTimes(number) {
  const result = number * 10;
  return result;
}
const output = tenTimes(5);
console.log(output);

Output: 50;

এখানে তুই দেখতেই পারছিস যে, ফাংশনের রিটার্ন করা ভ্যালুকে আমরা অন্য আরেকটি ভেরিয়েবলে স্টোর করছি।

javascript
function add(price1, price2) {
  const total = price1 + price2;
  return total;
}
const bill = add(5, 80);
console.log(bill);

Output: 85;

তুই চাইলে ওপরের ফাংশনকে ছোট করে এভাবেও লিখতে পারিস— অর্থাৎ এখানে আলাদা করে কোনো ভেরিয়েবল ডিক্লেয়ার করে এটি করতে হবে, তা কিন্তু না। তুই চাইলেই সেটাকে সরাসরি রিটার্ন করে দিতে পারবি। এই টেকনিকটাও অনেকেই ব্যবহার করে।

javascript
function add(price1, price2) {
  return price1 + price2;
}

আবার বিভিন্নভাবে ফাংশনকে কল করা যায়। যেমন ধর, প্রথমে দুইটা ভেরিয়েবল দিয়ে কল করলি। তারপর অন্য দুইটা ভেরিয়েবল দিয়ে। তারপর সেই দুটার রেজাল্ট দিয়ে আরেকবার কল করলি।

javascript
const potato = 35;
const onion = 62;
const shirt = 500;
const pant = 1250;

function add(price1, price2) {
  return price1 + price2;
}

const bill1 = add(potato, onion);
const bill2 = add(shirt, pant);
const final = add(bill1, bill2);
console.log(final);

Output: 1847;

তুই চাইলে এই ফাংশনের মাধ্যমে অনেক বড় বড় কাজও করে ফেলতে পারবি। উদাহরণস্বরূপ:

javascript
function doMath(num1, num2) {
  const sum = num1 + num2;
  const diff = num1 - num2;
  const multiply = sum * diff;
  const result = multiply / 2;
  return result;
}
const result = doMath(10, 5);
console.log(result);

Output: 37.5;

দরকার হলে কন্ডিশন বা শর্তসাপেক্ষেও return হতে পারে।

ধর, একটা ফাংশন ডিক্লেয়ার করলাম, যেটা কোনো নাম্বার জোড়সংখ্যা হলে true রিটার্ন করবে, আর বিজোড় হলে false রিটার্ন করবে।

javascript
function isEven(num) {
  if (num % 2 === 0) {
    return true;
  } else {
    return false;
  }
}
console.log(isEven(5));
console.log(isEven(110));

Output: false;
true;

তাহলে তুই দেখেই বুঝতে পারছিস, কোনো কন্ডিশনের মাধ্যমে আমরা রিটার্ন স্টেটমেন্ট ব্যবহার করে বিভিন্ন কাজ করতে পারি। একই কাজ আমরা বিভিন্নভাবে করতে পারি। যেমন, আমি যদি আরেকটা উপায় দেখাই:

javascript
function isOdd(num) {
  if (num % 2 === 1) {
    return true;
  }
  return false;
}
console.log(isOdd(10));
console.log(isOdd(7));

Output: false;
true;

এখানে কী ঘটেছে? এখানে যদি আমাদের কন্ডিশনটি সত্য হয়, অর্থাৎ সংখ্যাটি একটি বিজোড়সংখ্যা হয়, তাহলে সেটি true রিটার্ন করবে। কিন্তু যদি তা না হয়, তাহলে আরেকটি স্টেটমেন্ট না দিয়েই আমরা সরাসরি false রিটার্ন করে দিয়েছি। তুই চাইলে এই টেকনিকও ব্যবহার করতে পারিস।

JavaScript Function Return Practice:

  1. একটা ফাংশন লিখ, যাতে কোনো কন্ডিশনের ভিত্তিতে নাম্বার 10-এর বেশি হলে true রিটার্ন করবে, আর না হলে false রিটার্ন করবে।
  2. তুই একটা ফাংশন লিখ, যা সংখ্যা নিবে আর তারপর সেই সংখ্যা যদি 13 দিয়ে সমানভাবে ভাগ যায়, তাহলে true রিটার্ন দিবে, না হয় false রিটার্ন দিবে।
  3. তুই একটা রেস্টুরেন্টে গিয়েছিস, সেখানে ভাত (rice), তরকারি (curry) আর ড্রিঙ্কস (drinks) খাবি। একটা ফাংশন লিখ, যাতে খাবারের মোট দাম যোগ করে মোট বিল রিটার্ন করবে।
  4. এমন একটা ফাংশন বানা, যেখানে বয়স দিলে সেটি 18-এর বেশি হলে "Eligible for Voting" রিটার্ন করবে, আর না হলে "Not Eligible"।
  5. একটা ফাংশন লিখ, যেখানে একটি ভেরিয়েবল স্ট্রিং হিসেবে দিবি, আর সেটার দৈর্ঘ্য রিটার্ন করবে।
  6. তুই একটা ফাংশন লিখ, যা তিনটা সংখ্যার গড় বের করে রিটার্ন করবে।
  7. একটা ফাংশন লিখ, যেটা চেক করবে, কোনো একটা সংখ্যা নেগেটিভ কি না। যদি নেগেটিভ (negative) নাম্বার হয়, তাহলে সেটাকে -1 দিয়ে গুণ করে রেজাল্ট রিটার্ন করবে।

9-4: ফাংশনের দংশন

Function Advanced

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

এখন একটা ফাংশন লিখ, যা তোর দেওয়া string-এর মধ্যে জোড়সংখ্যক উপাদান আছে, না-কি বিজোড়সংখ্যক উপাদান আছে, তা return করবে।

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

স্টেপ-১: প্রথমে দেখব যে, আমাদের ফাংশনটা ঠিকঠাকমতো কাজ করছে কি না। অর্থাৎ সেটাকে একবার প্রিন্ট করে দেখব যে, এখানে আমাদের ফাংশনটা কাজ করছে কি না।

javascript
function evenSizedString(str) {
  console.log(str);
}
evenSizedString("Dhaka");

// Output: Dhaka

আমাদের string টা ঠিকঠাক মতোই কাজ করছে।

স্টেপ-২: আমরা জানি, কীভাবে কোনো string-এর length বের করতে হয়। সেটাই ফাংশনের ভিতরে size নামে একটা ভেরিয়েবলে রাখলাম। তুই চাইলে length বা অন্য কোনো মিনিংফুল নাম দিতে পারস। মিনিংফুল নাম বলতে বুঝায় যে, নাম দিয়ে বুঝা যাবে বা ধারণা করা যাবে, এই ভেরিয়েবলের মধ্যে কী রাখা আছে বা এইটার কাজ কী।

javascript
function evenSizedString(str) {
  const size = str.length;
  console.log(str, size);
}
evenSizedString("Dhaka");

// Output: Dhaka 5

স্টেপ-৩: এখন দেখব, যে length আমরা বের করেছি, সেটা জোড়সংখ্যা কি না।

javascript
function evenSizedString(str) {
  const size = str.length;

  if (size % 2 === 0) {
    console.log("Even Size");
  } else {
    console.log("Odd Size");
  }
}
evenSizedString("Dhaka");

// Output: Odd size

এর মাধ্যমে আমরা জানতে পারলাম, যেকোনো string-এর সাইজ জোড়সংখ্যা নাকি বিজোড়সংখ্যা। তবে এইসব ক্ষেত্রে console log না করে বরং true অথবা false রিটার্ন করা হয়।

এখন যদি তুই চাস, এটাকে রিটার্ন স্টেটমেন্ট ব্যবহার করে রিটার্ন করতে পারিস।

javascript
function evenSizedString(str) {
  const size = str.length;

  if (size % 2 === 0) {
    return true;
  } else {
    return false;
  }
}
const isEven = evenSizedString("Human");
console.log(isEven);

// Output: false

এখন হালকা একটু ডিফারেন্ট একটা ফাংশন দেখি। এইখানে দুইটা প্যারামিটার। প্রথম প্যারামিটারে একটা সংখ্যা। আর সেকেন্ড প্যারামিটারে একটা বুলিয়ান। যদি সেকেন্ড প্যারামিটারের মান true হয়, তাহলে প্রথম প্যারামিটার হিসেবে যে সংখ্যা আসবে, সেটাকে দ্বিগুণ করে গুণফল রিটার্ন করবি। আর যদি সেকেন্ড প্যারামিটার false হয়, তাহলে প্রথম প্যারামিটারকে তিনগুণ করে রেজাল্টকে রিটার্ন করবি। নিচে এই ফাংশনকে দুইবার কল করা হয়েছে। দুইটা আলাদা প্যারামিটার দিয়ে।

javascript
function doubleOrTriple(num, doDouble) {
  if (doDouble === true) {
    const result = num * 2;
    return result;
  } else {
    const result = num * 3;
    return result;
  }
}

console.log(doubleOrTriple(5, true));
console.log(doubleOrTriple(5, false));

// Output:
// 10
// 15

এখানে তুই নতুন একটা জিনিস দেখতে পাচ্ছস, সেটা হচ্ছে আমরা প্যারামিটারের মধ্যে কোনো একটা বুলিয়ান ভ্যালু পাস করছি। সুতরাং তুই চাইলে যেকোনো ফাংশনের মধ্যে বুলিয়ান টাইপের ভ্যালু পাস করতে পারিস।

আবার, তুই চাইলে যেকোনো ফাংশনের মধ্যে প্যারামিটার হিসেবে array ও পাস করতে পারিস। নিচে একটা ফাংশন আছে, যেটার প্যারামিটার হিসেবে একটা nums নামক একটা array-কে নেওয়া হচ্ছে। তারপর সেই array-এর মধ্যে উপাদান কয়টা আছে, সেটাকে একটা ভেরিয়েবলে রেখে সেই ভেরিয়েবলকে রিটার্ন করে দিচ্ছে।

javascript
function numberOfElement(nums) {
  const len = nums.length;
  return len;
}
const len = numberOfElement([12, 45, 78, 45, 121254, 4, 5]);
console.log(len);

// Output: 7

JavaScript Function Practice:

  1. তোর দেওয়া array-এর মধ্যে যতগুলো উপাদান আছে, উপাদানের সংখ্যা জোড় নাকি বিজোড়, তা চেক কর। ফাংশন লিখে এটা করে দেখ।
  2. ধর, তোকে এমন একটা ফাংশন বানাতে হবে, যেটাতে একটা নাম পাস করলে সেটার প্রথম অক্ষরটা রিটার্ন করবে। ধর 'Raju' দিলে 'R' রিটার্ন করবে।
  3. তুই একটা ফাংশন বানাবি, যেটাতে একটা সংখ্যা দিবি। ফাংশনটা চেক করবে, সংখ্যাটা 10-এর বড় কি না। বড় হলে 10 দিয়ে ভাগ করবে। আর 10-এর ছোট হলে 10 দিয়ে গুণ করবে। তারপর রেজাল্ট রিটার্ন করবে।
  4. একটা ফাংশন বানা, যেটা একটা array নিবে এবং array-এর প্রথম এবং দ্বিতীয় উপাদান যোগ করে যোগফল রিটার্ন করবে।
  5. একটা ফাংশন বানাবি, যেটা কোনো সংখ্যা n পাবে, আর সেই সংখ্যা দ্বিগুণ করে রিটার্ন করবে, যদি n পজিটিভ হয়। যদি n নেগেটিভ হয়, তাহলে তিনগুণ করে রিটার্ন করবে।
  6. তুই এমন একটা ফাংশন লিখবি, যা দুইটা নাম নিবে, প্রথম নাম আর দ্বিতীয় নাম। যদি প্রথম নামের দৈর্ঘ্য দ্বিতীয় নামের দৈর্ঘ্যের চেয়ে বেশি হয়, তাহলে true রিটার্ন করবে, না হলে false।
  7. তুই এমন একটি ফাংশন লিখ, যা দুইটি সংখ্যা নিবে এবং তাদের গুণফল রিটার্ন করবে। তবে, গুণফল 100-এর বেশি হলে শুধু তার অর্ধেক রিটার্ন করবে।

9-5: ধাপে ধাপে ফাংশনের জংশন

Function-কে যখন আমরা কল করি, তখন বিভিন্ন ধরনের প্যারামিটার ব্যবহার করে function-কে কল করতে পারি। আমরা সংখ্যা দিতে পারি, চাইলেই ভেরিয়েবল দিতে পারি, যেকোনো ধরনের string দিয়েও কল করতে পারি, আবার array দিয়েও সেটাকে কল করতে পারি।

এখন আমরা array সম্পর্কিত কিছু অপারেশন শিখব।

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

একজন প্রোগ্রামার হিসেবে তোকে ধাপে ধাপে চিন্তা করতে হবে। প্রথমেই আমরা আমাদের basic ফাংশনটা তৈরি করার চেষ্টা করব। এসব কিছু তুই চাইলে step by step করে দেখতে পারিস। যেমন:

স্টেপ-১: একটা ফাংশন ডিক্লেয়ার করে ফেল। তারপর সেই ফাংশনকে কল করে দেখ, ঠিকমতো কল হচ্ছে কি না। প্রথম প্রথম এইভাবে চেক করলে ভালো। তাহলে অনাকাঙ্ক্ষিত ভুল হলে সেটা আগেই ধরা খেয়ে যাবে।

javascript
function sumOfNumbers() {}

const result = sumOfNumbers();
console.log(result);

// Output: undefined

এখানে আমরা কোনো প্যারামিটার পাস করিনি, শুধু একটা basic function তৈরি করেছি। এখানে আমরা result নামে একটা ভেরিয়েবল ডিক্লেয়ার করেছি, যেখানে আমরা আমাদের ফাংশন থেকে রিটার্ন করা স্টেটমেন্টটি স্টোর করব। যদিও ফাংশনের ভিতর থেকে আমরা এখনও কিছু রিটার্ন করিনি। তাই সে রিটার্ন হিসেবে undefined দেখাবে অর্থাৎ রিটার্ন ডিফাইন করা হয়নি বা রিটার্ন কিছু দেয়া হয়নি।

স্টেপ-২: একটা প্যারামিটার হিসেবে array পাঠাব। দেখব, সেই array ফাংশনের ভিতরে যাচ্ছে কি না। যদি ঠিকমতো যায়, তাহলে ফাংশনের ভিতরে console.log করলে সেটাকে আউটপুট হিসেবে দেখাবে।

javascript
function sumOfNumbers(numbers) {
  console.log(numbers);
}

const result = sumOfNumbers([12, 45, 6, 8, 14]);
console.log(result);

// Output:
// [12, 45, 6, 8, 14]
// undefined

স্টেপ-৩: যদি ফাংশনের ভিতরে array-টাকে পাওয়া যায়, তাহলে ফাংশনের ভিতরে লুপ করে দেখব, array-এর প্রতিটা উপাদান আলাদা আলাদাভাবে আউটপুট হিসেবে পাচ্ছি কি না।

javascript
function sumOfNumbers(numbers) {
  for (const number of numbers) {
    console.log(number);
  }
}

const result = sumOfNumbers([12, 45, 6, 8, 14]);
console.log(result);

// Output:
// 12
// 45
// 6
// 8
// 14
// undefined

স্টেপ-৪: এখন তোর কাজ হবে ফাংশনের ভিতরে লুপের বাইরে sum নামে একটা ভেরিয়েবল ডিক্লেয়ার করা। তারপর sum ভেরিয়েবলকে যোগফলের একটা স্টোরেজ হিসেবে ব্যবহার কর। যাতে লুপ করে প্রত্যেকবার যে উপাদানটা পাবি, সেটা sum-এর এক্সিস্টিং ভ্যালুর সাথে যোগ করে আবার sum ভ্যারিয়েবলেই স্টোর করবি। আর আমরা যেহেতু যোগ-বিয়োগের কাজ করছি, সেজন্য sum-এর ইনিশিয়াল ভ্যালু 0 রাখবি। আর এইখানে sum ভেরিয়েবলের মান চেইঞ্জ হবে, তাই এটাকে let দিয়ে ডিক্লেয়ার করতে হবে।

javascript
function sumOfNumbers(numbers) {
  let sum = 0;
  for (const number of numbers) {
    sum = sum + number;
    console.log(sum);
  }
}
const nums = [54, 62, 12, 6];
const sum = sumOfNumbers(nums);

// Output:
// 54
// 116
// 128
// 134

স্টেপ-৫: ভালোভাবে চেক করে দেখবি, sum-এর মান ঠিকমতো আসতেছে কি না। যদি আসে, তাহলে বুঝতে হবে, তোর যোগ ঠিকঠাক হচ্ছে। তাহলে sum-কে রিটার্ন করতে হবে। তবে একটা জিনিস খেয়াল রাখতে হবে— রিটার্ন কিন্তু for লুপের ভিতর থেকে করা যাবে না; বরং লুপের বাইর থেকে করতে হবে। লুপের ভিতরে যেখানে sum-এর মান সেট করা হচ্ছে, সেখানে করলে জাস্ট প্রথমবার sum-এর মান রিটার্ন করে লুপ শেষে হয়ে যাবে। ফাইনাল রেজাল্ট দিবে না।

এখন চাইলে তুই এই ফাংশনকে বিভিন্নভাবে কল করে দেখতে পারিস, যে এটি ঠিকঠাক কাজ করছে কি না।

javascript
function sumOfNumbers(numbers) {
  let sum = 0;
  for (const number of numbers) {
    sum = sum + number;
  }
  return sum;
}
const nums = [54, 62, 12, 6];
const total = sumOfNumbers(nums);
console.log("Sum of Numbers is", total);

// Output: Sum of Numbers is 134

ওপরের কোডের নিচের দিকে তুই দেখবি, আমি nums নামে array ডিক্লেয়ার করে সেটাকে প্যারামিটার হিসেবে পাঠাচ্ছি sumOfNumbers নামক ফাংশনের মধ্যে। তারপর sumOfNumbers ফাংশন থেকে যেটা রিটার্ন আসবে, সেটাকে আমি total নামক একটা ভেরিয়েবলে রাখছি। তারপর সেই total ভেরিয়েবলকে console.log করতেছি, আরও কিছু টেক্সটসহ।

পুরা কোড এবং থিংকিং প্রসেস দেখে মাথা আউলায় যেতেই পারে। তাই এই কোড তুই তিনবার ভালো করে খেয়াল করে দেখবি।

Advanced:

এইবার হালকা একটু ঘুরিয়ে দিই, তোকে সব সংখ্যার যোগ করতে হবে, এমন না; বরং শুধু জোড় সংখ্যাগুলোর যোগফল বের করতে হবে। তাহলে কি করবি? একটু চিন্তা কর, নিজে নিজে ট্রাই কর। না হলে নিচের কোডটুকু দেখে বুঝার চেষ্টা কর।

javascript
function evenNumbersSum(numbers) {
  let sum = 0;
  for (const number of numbers) {
    if (number % 2 === 0) {
      sum = sum + number;
    }
  }
  return sum;
}
const nums = [54, 13, 1, 6];
const total = evenNumbersSum(nums);
console.log("Sum of even Numbers is", total);

// Output: Sum of even Numbers is 60

শুধু sum-এর সাথে array-এর উপাদান যোগ করার আগে একটা শর্ত যোগ করে দিয়েছি, আর কিছু না। এই শর্তটাও তোর কাছে নতুন না। তবে ফাংশনের ভিতরে লুপের ভিতরে শর্ত দেয়ার বিষয়টা নতুন। তাই হজম হতে একটু সময় লাগবে। তবে ধৈর্যসহকারে দুই-চারদিন প্র্যাকটিস করলে ঠিকই হজম হয়ে পেটের ভিতরে প্রসেস হয়ে যাবে।

JavaScript Function Practice:

  1. তোর এক বন্ধুর কাছে কিছু নম্বর আছে: [5, 15, 8, 7]। ওর চাওয়া অনুযায়ী, শুধু বিজোড় সংখ্যাগুলার যোগফল বের করে দে। এই কাজের জন্য একটা ফাংশন লিখে ফলাফলটা রিটার্ন কর।
  2. একটা ফাংশন লিখে দেখ, যেটা array-এর প্রথম দুইটা উপাদানের মধ্যে যেটা ছোট সেটাকে রিটার্ন করবে। উদাহরণস্বরূপ, তুই যদি [20, 45, 78] পাঠাস, ফাংশন 20 রিটার্ন করবে।
  3. তুই তোর বয়স একটু লুকিয়ে-চুপিয়ে দেখাতে চাস। ধর, তোর বয়স 18-এর কম হলে তুই রিটার্ন 18, আবার 45-এর বেশি হলে তুই বলবি 45, আর এই দুইটার মাঝখানে কোনো সংখ্যা হলে সরাসরি সেই সংখ্যাটা রিটার্ন করে পাঠিয়ে দিবি। এমন একটা ফাংশন লিখ।
  4. তোর এক বন্ধুর কাছে একটা array আছে, যেমন: [2, 4, 5, 7, 8, 32, 45]। এখন এমন একটা ফাংশন তৈরি কর, যেটা শুধু array-এর 4 দিয়ে ভাগ যায়, এমন সংখ্যাগুলোর যোগফল দেখাবে।
  5. একটা ফাংশন লিখ, যা একটি নাম্বার নিবে এবং সেটি যদি 20-এর কম হয়, তবে নাম্বারটিকে দ্বিগুণ করবে, না হলে 20 দিয়ে ভাগ করবে।
  6. এমন একটা ফাংশন লিখ, যা array-এর মধ্যে শুধু নেগেটিভ সংখ্যাগুলোর যোগফল রিটার্ন করবে।
  7. একটা ফাংশন লিখ, যা একটি array নিবে এবং array-এর মধ্যে যে সংখ্যাগুলা 3 দিয়ে ভাগ যায়, তাদের গুণফল রিটার্ন করবি।

9-6: শেষ মিশন: রিভিশন

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

Variable:

সর্বপ্রথম যে জিনিসটা পরিষ্কার করতে হবে, তা হলো ভেরিয়েবল ডিক্লারেশন। আমরা const এবং let ব্যবহার করে ভেরিয়েবল ডিক্লেয়ার করছি। বেশির ভাগ সময় const দিয়ে ভেরিয়েবল ডিক্লেয়ার করবি। আর মাঝেমধ্যে ভেরিয়েবল মান চেইঞ্জ করা লাগবে, এমন কিছু ক্ষেত্রে let ব্যবহার করবি।

const ব্যবহার করতে হলে ভেরিয়েবলের মান পরিবর্তন করা যাবে না।

let ব্যবহার করতে হলে ভেরিয়েবলের মান পরিবর্তন করা যাবে।

ভেরিয়েবলের মান বিভিন্ন ধরনের হতে পারে। যেমন— null, undefined, number, string, boolean, array, object।

Conditionals

কম্পারিজন সম্পর্কে জানতে হবে। যেমন >, <, >=, <=, ===, !== ইত্যাদি। যখন একাধিক শর্ত থাকে, তখন && (AND) বা || (OR) ব্যবহার করা হয়।

If-এর পরে ব্র্যাকেটের ভেতরে একটি শর্ত থাকবে, শর্ত সত্য হলে শর্তের পরে সেকেন্ড ব্র্যাকেটের ভেতরের কোডগুলো এক্সিকিউট হবে। আর শর্ত মিথ্যা হলে else ব্লকের পরে কোড থাকলে সেই কোড কাজ করবে। প্রয়োজন অনুযায়ী else-if ব্লকও ব্যবহার করা যেতে পারে।

Array:

[ ] স্কোয়ার ব্র্যাকেটের মধ্যে কমা দিয়ে আলাদা করে একাধিক মান বসানো যায়। Array-এর উপাদানগুলোর পজিশন ইনডেক্স (index) শুরু হয় 0 দিয়ে। Array থেকে নির্দিষ্ট ইন্ডেক্সের মান পেতে প্রথমে Array-এর নাম এবং তারপর স্কোয়ার ব্র্যাকেটের মধ্যে ইন্ডেক্স নম্বর দিতে হবে।

এ ছাড়াও Array-এর মধ্যে push, pop, shift, unshift ইত্যাদি গুরুত্বপূর্ণ অপারেশন রয়েছে। Array-তে কোনো মান আছে কি না, তা জানতে includes ব্যবহার করা হয়।

Loop

Basic loop-এর মধ্যে for-of লুপ, while লুপ এবং for লুপ রয়েছে। for-of ব্যবহার করে Array-এর মধ্যে loop through করে প্রতিটি উপাদানকে আলাদা আলাদাভাবে দেখা যায়।

লুপের মধ্যে break এবং continue ব্যবহার সম্পর্কে জানাও গুরুত্বপূর্ণ।

Object

অবজেক্টে আমরা অনেকগুলো মান প্রপার্টি হিসেবে রাখতে পারি, যেখানে একটি প্রপার্টি থাকে এবং একটি মান থাকে। Object থেকে মান রিড করতে dot-notation এবং bracket-notation ব্যবহার করা হয়।

Object-এ loop করার জন্য for-in লুপ ব্যবহার করা হয়।

Function

ফাংশন ডিক্লেয়ার করার জন্য নাম এবং প্যারামিটার দিয়ে ডিক্লেয়ার করা হয়। Function কল করার জন্য নামের পর ফার্স্ট ব্র্যাকেট ব্যবহার করা হয়।

Function-এর মধ্যে একটি গুরুত্বপূর্ণ জিনিস হলো return। যখন কোনো ভ্যালু পাওয়ার জন্য Function-কে কল করা হয়, তখন return ব্যবহার করতে হয়।

এই জিনিসগুলো যদি তুই জানিস, তাহলে তুই সামনে আগানোর জন্য প্রস্তুত। দুই-একটা জিনিস নিয়ে মনের ভিতরে খচখচ করলেও সেটা নিয়ে একদম প্যারা নিবি না; বরং সামনে এগিয়ে যাস। আর প্রতি মাসের অমাবস্যার রাতে (রাত 11টা 11 মিনিট 11 সেকেন্ডে উঠে কালো মোমবাতি জ্বালিয়ে) রিভিশন দিলেই হবে।

Released under the MIT License.