তামিম আহমেদ
তামিম আহমেদ
12 Aug 2023 (9 months ago)
আড়াইহাজার, নারায়ণগঞ্জ, ঢাকা, বাংলাদেশ

বিগিনারদের জন্য JS সম্পূর্ণ মৌলিক টিউটোরিয়াল


Listen to this article

Contents

জাভাস্ক্রিপ্ট ভূমিকা

জাভাস্ক্রিপ্ট ওয়েব ডেভেলপমেন্টের জন্য বহুল ব্যবহৃত একটি প্রোগ্রামিং ভাষা। এটি মূলত গতিশীল আচরণ যোগ করে এবং ব্যবহারকারীর ক্রিয়াকলাপের প্রতিক্রিয়া দিয়ে ওয়েব পৃষ্ঠাগুলিকে ইন্টারেক্টিভ করতে ব্যবহৃত হয়। এটি সরাসরি ওয়েব ব্রাউজারে চলে এবং সার্ভারেও (Node.js) ব্যবহার করা যেতে পারে। এটি তার বহুমুখীতার জন্য পরিচিত এবং আধুনিক ওয়েব অ্যাপ্লিকেশন তৈরির জন্য এটি একটি মৌলিক হাতিয়ার।

জাভাস্ক্রিপ্ট দিয়ে শুরু করা

জাভাস্ক্রিপ্টের সাথে শুরু করার জন্য, আপনাকে HTML এবং CSS এর একটি প্রাথমিক বোঝার প্রয়োজন হবে। এখানে প্রাথমিক পদক্ষেপ আছে:

বেসিক সিনট্যাক্স : জাভাস্ক্রিপ্ট কোড স্টেটমেন্ট নিয়ে গঠিত, যা ক্রমানুসারে কার্যকর করা হয়। বিবৃতি একটি সেমিকোলন দিয়ে শেষ হয়। varভেরিয়েবল , let, বা ব্যবহার করে ঘোষণা করা হয় const। উদাহরণ স্বরূপ:

var message = "Hello!";
console.log(message);

মৌলিক ধারণা : ডেটা প্রকার (স্ট্রিং, সংখ্যা, বুলিয়ান), অপারেটর, নিয়ন্ত্রণ কাঠামো (যদি বিবৃতি, লুপ) এবং ফাংশন সম্পর্কে জানুন। জাভাস্ক্রিপ্ট কোড লেখার জন্য এগুলি অপরিহার্য বিল্ডিং ব্লক।

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

মনে রাখবেন, অনুশীলনই মুখ্য। ছোট শুরু করুন, পরীক্ষা করুন এবং ধীরে ধীরে আপনার দক্ষতা তৈরি করুন কারণ আপনি জাভাস্ক্রিপ্টের সাথে আরও স্বাচ্ছন্দ্য বোধ করেন।

জাভাস্ক্রিপ্ট ভেরিয়েবল এবং ধ্রুবক

জাভাস্ক্রিপ্টে, ভেরিয়েবল এবং ধ্রুবকগুলি ডেটা সংরক্ষণ এবং পরিচালনা করতে ব্যবহৃত হয়। এখানে ভেরিয়েবল এবং ধ্রুবকগুলির একটি ওভারভিউ রয়েছে:

  1. ভেরিয়েবল : পরিবর্তনশীল মান সংরক্ষণ করতে ভেরিয়েবল ব্যবহার করা হয়। varআপনি , let, বা এর মত কীওয়ার্ড ব্যবহার করে ভেরিয়েবল ঘোষণা করতে পারেন const
  • var: বিশ্বব্যাপী বা একটি ফাংশনের মধ্যে ভেরিয়েবল ঘোষণা করতে ব্যবহৃত হয়। সম্ভাব্য স্কোপিং সমস্যার কারণে এটি কম সুপারিশ করা হয়।
  • let: আধুনিক জাভাস্ক্রিপ্টে প্রবর্তিত, এটি ব্লক-স্কোপড ভেরিয়েবলের অনুমতি দেয়। যখন ভেরিয়েবলের মান পরিবর্তন হতে পারে তখন এটি ব্যবহার করুন।
  • const: এছাড়াও ব্লক-স্কোপড, এটি এমন মানগুলির জন্য ব্যবহৃত হয় যা অ্যাসাইনমেন্টের পরে পরিবর্তন হবে না। এটা ধ্রুবক জন্য একটি ভাল পছন্দ.

   // Using let
   let count = 5;
   count = 10;

   // Using const
   const pi = 3.14159;

   // Using var (less recommended)
   var name = "John";
  1. ধ্রুবক : ধ্রুবকগুলি কীওয়ার্ড ব্যবহার করে ঘোষণা করা হয় constএবং সেই মানগুলির জন্য ব্যবহার করা হয় যা অ্যাসাইনমেন্টের পরে পরিবর্তন করা উচিত নয়।

   const maxScore = 100;
   // maxScore = 90; // This would result in an error since constants can't be reassigned
  1. নামকরণের নিয়মাবলী : পরিবর্তনশীল এবং ধ্রুবক নামগুলি কেস-সংবেদনশীল এবং একটি অক্ষর দিয়ে শুরু করতে হবে, $বা _। তারা অক্ষর, সংখ্যা, $এবং অন্তর্ভুক্ত করতে পারে _

   let firstName = "Alice";
   const _isValid = true;
   const $price = 19.99;
  1. স্কোপ : একটি ভেরিয়েবলের স্কোপ বোঝায় যেখানে এটি অ্যাক্সেস করা যেতে পারে। সাথে ঘোষিত ভেরিয়েবলগুলি varফাংশন-স্কোপড, যখন ভেরিয়েবলের সাথে ঘোষিত letএবং constব্লক-স্কোপড।

   if (true) {
       let localVar = "I'm inside a block";
   }
   // console.log(localVar); // This would result in an error since localVar is block-scoped
  1. উত্তোলন : সাথে ঘোষিত ভেরিয়েবলগুলি varউত্তোলন করা হয় (সংকলনের সময় তাদের সুযোগের শীর্ষে সরানো হয়), যা অপ্রত্যাশিত আচরণের দিকে নিয়ে যেতে পারে। ভেরিয়েবলের সাথে ঘোষিত letএবং constউত্তোলন করা হয়, কিন্তু তাদের ঘোষণার সম্মুখীন না হওয়া পর্যন্ত সেগুলি আরম্ভ করা হয় না।
  2. ভেরিয়েবলের সূচনা : ভেরিয়েবল ঘোষণা করার সময় এটি শুরু করা একটি ভাল অভ্যাস। অপ্রবর্তিত ভেরিয়েবলের একটি প্রাথমিক মান আছে undefined

   let age; // uninitialized
   console.log(age); // Outputs: undefined

   let score = 100; // initialized

মনে রাখবেন যে অ্যাসাইনমেন্টের পরে মান পরিবর্তন হবে কিনা letএবং এর মধ্যে নির্বাচন করা নির্ভর করে। constঅর্থপূর্ণ পরিবর্তনশীল নাম ব্যবহার করুন এবং আপনার কোডে স্পষ্টতার জন্য একটি সামঞ্জস্যপূর্ণ নামকরণের নিয়ম অনুসরণ করুন।

JavaScript console.log()

console.log()একটি জাভাস্ক্রিপ্ট ফাংশন যা ব্রাউজারের কনসোলে বার্তা প্রিন্ট বা লগ করতে ব্যবহৃত হয়। এটি ডিবাগিং এবং আপনার কোড কিভাবে কাজ করে তা বোঝার জন্য একটি মূল্যবান টুল। আপনি কিভাবে এটি ব্যবহার করতে পারেন তা এখানে:

console.log("Hello, World!"); // Outputs: Hello, World!

let number = 42;
console.log("The answer is:", number); // Outputs: The answer is: 42

const person = {
    firstName: "John",
    lastName: "Doe",
};
console.log("Person:", person); // Outputs: Person: {firstName: "John", lastName: "Doe"}

আপনি একাধিক আর্গুমেন্ট পাস করতে পারেন console.log(), এবং এটি তাদের ক্রমানুসারে লগ করবে। আর্গুমেন্ট হতে পারে স্ট্রিং, ভেরিয়েবল, অবজেক্ট বা অন্য কোন ডাটা টাইপ।

ব্রাউজারের ডেভেলপার কনসোলে (রাইট-ক্লিক করে এবং “ইন্সপেক্ট” বা “ইনস্পেক্ট এলিমেন্ট” নির্বাচন করে অ্যাক্সেসযোগ্য), আপনি console.log()স্টেটমেন্টের আউটপুট দেখতে পাবেন। এটি ভেরিয়েবলের মানগুলি ট্র্যাক করার জন্য, আপনার কোডের প্রবাহ পরীক্ষা করার জন্য এবং ত্রুটিগুলি সনাক্ত করার জন্য অবিশ্বাস্যভাবে সহায়ক।

যাইহোক, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে console.log()প্রধানত ডিবাগিং উদ্দেশ্যে ব্যবহৃত হয়। আপনি যখন ডিবাগিং শেষ করেছেন, পরিষ্কার এবং দক্ষ উত্পাদন কোড নিশ্চিত করতে আপনার কোড থেকে এই বিবৃতিগুলি সরাতে বা মন্তব্য করতে ভুলবেন না।

জাভাস্ক্রিপ্ট ডেটা প্রকার

জাভাস্ক্রিপ্ট বিভিন্ন ধরনের ডেটা সমর্থন করে, প্রতিটি একটি নির্দিষ্ট উদ্দেশ্য পরিবেশন করে। এখানে জাভাস্ক্রিপ্টের প্রাথমিক ডেটা প্রকারগুলি রয়েছে:

  1. আদিম তথ্য প্রকার :
  • সংখ্যা : পূর্ণসংখ্যা এবং ভাসমান-বিন্দু উভয় সংখ্যার প্রতিনিধিত্ব করে।
  • স্ট্রিং : একক (”) বা দ্বিগুণ (“”) উদ্ধৃতিতে আবদ্ধ অক্ষরের একটি ক্রম প্রতিনিধিত্ব করে।
  • বুলিয়ান : একটি বাইনারি মান প্রতিনিধিত্ব করে: trueবা false
  • Undefined : একটি ভেরিয়েবলের প্রতিনিধিত্ব করে যা ঘোষণা করা হয়েছে কিন্তু একটি মান নির্ধারণ করা হয়নি।
  • নাল : কোনো মানের ইচ্ছাকৃত অনুপস্থিতির প্রতিনিধিত্ব করে।
  • চিহ্ন : ECMAScript 6-এ প্রবর্তিত, প্রতীকগুলি অনন্য এবং প্রাথমিকভাবে নামের সংঘর্ষ রোধ করতে অবজেক্ট প্রপার্টি কী হিসাবে ব্যবহৃত হয়।
  1. জটিল তথ্য প্রকার :
  • অবজেক্ট : কী-মানের জোড়ার (বৈশিষ্ট্য এবং পদ্ধতি) সংগ্রহের প্রতিনিধিত্ব করে।
  • বিন্যাস : বর্গাকার বন্ধনীতে আবদ্ধ মানগুলির একটি অর্ডারকৃত তালিকা উপস্থাপন করে []
  • ফাংশন : একটি বিশেষ ধরনের বস্তু যা কার্যকর করা যেতে পারে।

এখানে বিভিন্ন ধরনের ডেটা প্রদর্শনের একটি উদাহরণ রয়েছে:

// Primitive data types
let age = 25; // Number
let name = "Alice"; // String
let isStudent = true; // Boolean
let dataUndefined; // Undefined
let noValue = null; // Null
let uniqueSymbol = Symbol("description"); // Symbol

// Complex data types
let person = { // Object
    firstName: "John",
    lastName: "Doe",
    age: 30
};

let colors = ["red", "green", "blue"]; // Array

function greet(name) { // Function
    console.log(`Hello, ${name}!`);
}

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

জাভাস্ক্রিপ্ট অপারেটর

জাভাস্ক্রিপ্ট ডেটাতে বিভিন্ন ক্রিয়াকলাপ সম্পাদনের জন্য বিভিন্ন অপারেটর সরবরাহ করে। এখানে জাভাস্ক্রিপ্টের অপারেটরগুলির কয়েকটি মূল ধরন রয়েছে:

  1. পাটিগণিত অপারেটর :
    • +: যোগ
    • -: বিয়োগ
    • *: গুণ
    • /: বিভাগ
    • %: মডুলাস (বিভাগের অবশিষ্ট)
    • **: ব্যাখ্যা (ES6)
  2. অ্যাসাইনমেন্ট অপারেটর :
    • =: একটি মান বরাদ্দ করে
    • +=-=*=/=%=: একটি অপারেশন সম্পাদন করুন এবং ফলাফল নির্ধারণ করুন
  3. তুলনা অপারেটর :
    • ==: সমান (লুজ সমতা, টাইপ জবরদস্তি)
    • ===: সমান (কঠোর সমতা, কোন প্রকার জবরদস্তি নয়)
    • !=: সমান নয় (আলগা অসমতা, টাইপ জবরদস্তি)
    • !==: সমান নয় (কঠোর অসমতা, কোন প্রকার জবরদস্তি নয়)
    • ><: এর চেয়ে বড়, কম
    • >=<=: এর চেয়ে বড় বা সমান, এর চেয়ে কম বা সমান
  4. লজিক্যাল অপারেটর :
    • &&: যৌক্তিক এবং
    • ||: যৌক্তিক বা
    • !: যৌক্তিক নয়
  5. ইউনারি অপারেটর :
    • +: একটি সংখ্যায় রূপান্তর করুন (ইউনারি প্লাস)
    • -: একটি সংখ্যা নেগেট করুন (ইউনারি মাইনাস)
    • ++: 1 দ্বারা বৃদ্ধি
    • --: 1 দ্বারা হ্রাস
  6. স্ট্রিং অপারেটর :
    • +: সংযুক্তি (সংযুক্ত স্ট্রিং)
  7. শর্তসাপেক্ষ (Ternary) অপারেটর :
    • condition ? expr1 : expr2: শর্ত সত্য হলে, মূল্যায়ন করে expr1, অন্যথায় মূল্যায়ন করে expr2
  8. অপারেটরের ধরন :
    • typeof: একটি মানের ডেটা টাইপ নির্দেশ করে একটি স্ট্রিং প্রদান করে।
  9. অপারেটরের উদাহরণ :
    • instanceof: একটি বস্তু একটি নির্দিষ্ট শ্রেণীর একটি উদাহরণ কিনা পরীক্ষা করে.
  10. বিটওয়াইজ অপারেটর :
    • &|^: বিটওয়াইজ এবং, বা, XOR
    • ~: বিটওয়াইজ না
    • <<: বাম স্থানান্তর
    • >>: ডান স্থানান্তর
    • >>>: স্বাক্ষরবিহীন ডান স্থানান্তর

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

জাভাস্ক্রিপ্ট মন্তব্য

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

  1. একক-লাইন মন্তব্য : একটি একক-লাইন মন্তব্য তৈরি করতে
    ব্যবহার করুন । //একই লাইনে অনুসরণ করা যেকোনো কিছুকে //মন্তব্য হিসেবে গণ্য করা হয় এবং জাভাস্ক্রিপ্ট ইঞ্জিন দ্বারা কার্যকর করা হয় না।

   // This is a single-line comment
   let age = 25; // This comment explains the purpose of the variable
  1. বহু-লাইন মন্তব্য : একটি বহু-লাইন মন্তব্য শুরু করতে এবং এটি শেষ করতে
    ব্যবহার করুন । এবং এর মধ্যে যেকোন কিছুকে একটি মন্তব্য হিসাবে গণ্য করা হয় এবং একাধিক লাইন বিস্তৃত হতে পারে।/**//**/

   /*
   This is a multi-line comment.
   It can span multiple lines.
   */
   let name = "Alice";

মন্তব্যগুলি কোড পঠনযোগ্যতা উন্নত করার জন্য, জটিল যুক্তি ব্যাখ্যা করার জন্য, অন্যান্য বিকাশকারীদের প্রসঙ্গ প্রদান করার জন্য এবং এমনকি ডিবাগিং উদ্দেশ্যে অস্থায়ীভাবে কোড নিষ্ক্রিয় করার জন্য অমূল্য। যাইহোক, এটিকে অতিরিক্ত না করা গুরুত্বপূর্ণ—বিবেচনার সাথে মন্তব্যগুলি ব্যবহার করুন এবং ভাল নামকরণের নিয়মাবলী এবং স্পষ্ট কোড কাঠামোর মাধ্যমে আপনার কোড যতটা সম্ভব স্ব-ব্যাখ্যামূলক রাখুন।

জাভাস্ক্রিপ্ট টাইপ রূপান্তর

জাভাস্ক্রিপ্ট স্বয়ংক্রিয় টাইপ রূপান্তর (জবরদস্তি) সম্পাদন করে যখন আপনি অপারেটর বা বিভিন্ন ধরনের অপারেন্ডের সাথে ফাংশন ব্যবহার করেন। আপনার কোডে অপ্রত্যাশিত আচরণ এড়াতে টাইপ রূপান্তরগুলি বোঝা গুরুত্বপূর্ণ৷ এখানে টাইপ রূপান্তরের কিছু সাধারণ পরিস্থিতি রয়েছে:

  1. স্ট্রিং থেকে সংখ্যা রূপান্তর :
    জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে স্ট্রিংকে সংখ্যায় রূপান্তর করে গাণিতিক ক্রিয়াকলাপে।

   let numString = "42";
   let result = numString + 10; // "4210" (string concatenation)
   result = Number(numString) + 10; // 52 (numeric addition)
  1. সংখ্যা থেকে স্ট্রিং রূপান্তর :
    একটি স্ট্রিংয়ে একটি সংখ্যা যোগ করলে সংখ্যাটিকে একটি স্ট্রিংয়ে রূপান্তরিত করে।

   let num = 42;
   let combined = "The answer is: " + num; // "The answer is: 42"
  1. সুস্পষ্ট প্রকার রূপান্তর :
    আপনি স্পষ্টভাবে Number()String(), এবং এর মত ফাংশন ব্যবহার করে প্রকারের মধ্যে মান রূপান্তর করতে পারেন Boolean()

   let str = "123";
   let num = Number(str); // Convert string to number
   let bool = Boolean(num); // Convert number to boolean (true for non-zero)
  1. সত্য এবং মিথ্যা মান :
    জাভাস্ক্রিপ্ট বুলিয়ান প্রসঙ্গে ব্যবহৃত হলে কিছু মানকে “সত্য” (সত্যে মূল্যায়ন করে) বা “মিথ্যা” (মিথ্যাকে মূল্যায়ন করে) হিসাবে বিবেচনা করে।

   if (0) {
       // This block won't be executed because 0 is falsy
   }

   if ("hello") {
       // This block will be executed because non-empty string is truthy
   }
  1. অন্তর্নিহিত প্রকার রূপান্তর :
    কিছু ক্ষেত্রে, জাভাস্ক্রিপ্ট পরোক্ষভাবে মানগুলিকে প্রয়োজনীয় প্রকারে রূপান্তর করে।

   let result = "5" * 2; // Implicitly converts string to number for multiplication
  1. NaN (Not-a-Number) :
    একটি গাণিতিক অপারেশন ব্যর্থ হলে, JavaScript NaN প্রদান করে।

   let invalidNumber = parseInt("hello"); // NaN

অপ্রত্যাশিত ফলাফল এড়াতে জাভাস্ক্রিপ্ট কীভাবে রূপান্তরগুলি পরিচালনা করে তা বোঝা গুরুত্বপূর্ণ৷ আপনার কোড উদ্দেশ্য অনুযায়ী আচরণ করে তা নিশ্চিত করার জন্য আপনি যখন প্রকারের মধ্যে রূপান্তর করতে চান তখন স্পষ্ট হওয়া একটি ভাল অভ্যাস।

জাভাস্ক্রিপ্ট কন্ট্রোল ফ্লো

জাভাস্ক্রিপ্ট কন্ট্রোল ফ্লো

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

  1. শর্তসাপেক্ষ বিবৃতি :
    শর্তসাপেক্ষ বিবৃতি আপনাকে নির্দিষ্ট শর্তের উপর ভিত্তি করে কোডের বিভিন্ন ব্লক চালানোর অনুমতি দেয়।
  • if: একটি নির্দিষ্ট শর্ত সত্য হলে কোডের একটি ব্লক কার্যকর করে।
  • elseif: শর্ত মিথ্যা হলে চালানোর জন্য কোডের একটি বিকল্প ব্লক প্রদান করে ।
  • else if: আপনাকে পর্যায়ক্রমে একাধিক শর্ত পরীক্ষা করার অনুমতি দেয়।
  • switch: একটি এক্সপ্রেশনের বিভিন্ন মানের উপর ভিত্তি করে কোডের অনেক ব্লকের মধ্যে বেছে নেওয়ার একটি উপায় প্রদান করে।

   let num = 10;
   if (num > 0) {
       console.log("Positive");
   } else if (num < 0) {
       console.log("Negative");
   } else {
       console.log("Zero");
   }
  1. লুপস :
    লুপ আপনাকে কোডের একটি ব্লক একাধিকবার পুনরাবৃত্তি করতে দেয়।
  • for: কোডের একটি ব্লক নির্দিষ্ট সংখ্যক বার কার্যকর করে।
  • while: একটি নির্দিষ্ট শর্ত সত্য থাকাকালীন কোডের একটি ব্লক কার্যকর করে।
  • do...while: কোডের একটি ব্লক অন্তত একবার এক্সিকিউট করে এবং তারপর পুনরাবৃত্তি করে যখন একটি শর্ত সত্য হয়।

   for (let i = 0; i < 5; i++) {
       console.log(i);
   }

   let count = 0;
   while (count < 3) {
       console.log("Count:", count);
       count++;
   }

   let x = 5;
   do {
       console.log("x:", x);
       x--;
   } while (x > 0);
  1. নিয়ন্ত্রণ বিবৃতি :
  • break: বর্তমান লুপ বা সুইচ স্টেটমেন্ট থেকে প্রস্থান করে।
  • continue: একটি লুপের বর্তমান পুনরাবৃত্তি এড়িয়ে যায় এবং পরবর্তীতে চলে যায়।

   for (let i = 0; i < 10; i++) {
       if (i === 5) {
           break;
       }
       console.log(i);
   }

   for (let j = 0; j < 5; j++) {
       if (j === 2) {
           continue;
       }
       console.log(j);
   }

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

তুলনা এবং লজিক্যাল অপারেটর

তুলনা অপারেটর এবং লজিক্যাল অপারেটর হল সিদ্ধান্ত নেওয়ার এবং জাভাস্ক্রিপ্টে লজিক ক্রিয়াকলাপ সম্পাদনের জন্য মৌলিক হাতিয়ার। এখানে এই অপারেটরগুলির একটি ওভারভিউ রয়েছে:

তুলনা অপারেটর :
তুলনা অপারেটর ব্যবহার করা হয় মান তুলনা করতে এবং একটি বুলিয়ান ফলাফল ( trueবা false) ফেরত দিতে।

  • ==: সমান (লুজ সমতা, টাইপ জবরদস্তি)
  • ===: সমান (কঠোর সমতা, কোন প্রকার জবরদস্তি নয়)
  • !=: সমান নয় (আলগা অসমতা, টাইপ জবরদস্তি)
  • !==: সমান নয় (কঠোর অসমতা, কোন প্রকার জবরদস্তি নয়)
  • >: অপেক্ষা বৃহত্তর
  • <: এর চেয়ে কম
  • >=: এর চেয়ে বড় বা সমান
  • <=: অপেক্ষাকৃত ছোট বা সমান

উদাহরণ:

let a = 5;
let b = 10;
console.log(a == b);   // false
console.log(a < b);    // true
console.log(a !== b);  // true

লজিক্যাল অপারেটর :
লজিক্যাল অপারেটর বুলিয়ান মান বা অভিব্যক্তিতে লজিক্যাল অপারেশন করতে ব্যবহৃত হয়।

  • &&(লজিক্যাল AND): trueউভয় অপারেন্ড হলে রিটার্ন করে true
  • ||(যৌক্তিক বা): trueকমপক্ষে একটি অপারেন্ড হলে রিটার্ন করে true
  • !(যৌক্তিক নয়): অপারেন্ডের বিপরীত বুলিয়ান মান প্রদান করে।

উদাহরণ:

let x = 5;
let y = 10;
console.log(x > 0 && y < 20); // true
console.log(x > 0 || y < 5);  // true
console.log(!(x > 0));        // false

এই অপারেটরগুলি আপনার কোডের প্রবাহ নিয়ন্ত্রণ, সিদ্ধান্ত নেওয়া এবং শর্তাধীন যুক্তি প্রয়োগ করার জন্য অপরিহার্য। তুলনা এবং যৌক্তিক অপারেটরগুলিকে একত্রিত করে, আপনি শক্তিশালী অভিব্যক্তি তৈরি করতে পারেন যা নির্ধারণ করে যে আপনার প্রোগ্রামটি বিভিন্ন পরিস্থিতিতে কীভাবে সাড়া দেয়।

JavaScript if… else স্টেটমেন্ট

if...elseশর্তের উপর ভিত্তি করে সিদ্ধান্ত নিতে জাভাস্ক্রিপ্টে বিবৃতিটি ব্যবহার করা হয় । এটি আপনাকে একটি নির্দিষ্ট শর্ত সত্য না মিথ্যা তার উপর নির্ভর করে কোডের বিভিন্ন ব্লক চালানোর অনুমতি দেয়। এখানে মৌলিক সিনট্যাক্স আছে:

if (condition) {
    // Code to execute if the condition is true
} else {
    // Code to execute if the condition is false
}

else ifআপনি ক্রমানুসারে একাধিক শর্ত পরীক্ষা করতে অতিরিক্ত ব্লকও অন্তর্ভুক্ত করতে পারেন :

if (condition1) {
    // Code to execute if condition1 is true
} else if (condition2) {
    // Code to execute if condition2 is true
} else {
    // Code to execute if none of the conditions are true
}

এখানে if...elseবিবৃতি ব্যবহার করে একটি উদাহরণ:

let age = 18;

if (age >= 18) {
    console.log("You are eligible to vote.");
} else {
    console.log("You are not eligible to vote.");
}

এই উদাহরণে, যদি age18 এর চেয়ে বড় বা সমান হয়, তাহলে “আপনি ভোট দেওয়ার যোগ্য।” প্রদর্শন করা হবে; অন্যথায়, বার্তা “আপনি ভোট দেওয়ার যোগ্য নন।” প্রদর্শন করা হবে.

বিবৃতিটি if...elseআপনাকে আপনার কোডে ব্রাঞ্চিং লজিক তৈরি করতে দেয়, যেখানে নির্দিষ্ট শর্তের উপর ভিত্তি করে বিভিন্ন পাথ নেওয়া হয়। এটি সিদ্ধান্ত নেওয়ার এবং আপনার জাভাস্ক্রিপ্ট প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করার জন্য একটি মৌলিক হাতিয়ার।

লুপের জন্য জাভাস্ক্রিপ্ট

forএকটি নির্দিষ্ট সংখ্যক পুনরাবৃত্তির জন্য বারবার কোডের একটি ব্লক কার্যকর করতে জাভাস্ক্রিপ্টে লুপ ব্যবহার করা হয় । এটি বিশেষভাবে দরকারী যখন আপনি জানেন যে আপনি কতবার লুপটি চালাতে চান। এখানে একটি forলুপের মৌলিক সিনট্যাক্স:

for (initialization; condition; increment/decrement) {
    // Code to be executed in each iteration
}
  • ইনিশিয়ালাইজেশন : লুপ শুরু হওয়ার আগে এই অংশটি কার্যকর করা হয় এবং সাধারণত লুপ ভেরিয়েবল সেট আপ করতে ব্যবহৃত হয়।
  • শর্ত : যতক্ষণ এই শর্তটি মূল্যায়ন করবে ততক্ষণ লুপটি চলতে থাকবে true
  • ইনক্রিমেন্ট/ডিক্রিমেন্ট : এই অংশটি প্রতিটি পুনরাবৃত্তির পরে কার্যকর করা হয় এবং লুপ ভেরিয়েবল আপডেট করতে ব্যবহৃত হয়।

উদাহরণ:

for (let i = 0; i < 5; i++) {
    console.log("Iteration:", i);
}

এই উদাহরণে, লুপটি i0-তে শুরু হয়। এটি 5-এর কম হওয়া পর্যন্ত চলে i। প্রতিটি পুনরাবৃত্তির পরে,i 1 দ্বারা বৃদ্ধি পায়।

iআপনি লুপের মধ্যে লুপ ভেরিয়েবল ব্যবহার করতে পারেন তার মানের উপর ভিত্তি করে নির্দিষ্ট কাজ সম্পাদন করতে। উদাহরণস্বরূপ, আপনি একটি অ্যারের উপাদানগুলি অ্যাক্সেস করতে এটি ব্যবহার করতে পারেন:

let numbers = [1, 2, 3, 4, 5];
for (let i = 0; i < numbers.length; i++) {
    console.log("Number:", numbers[i]);
}

দ্যfor হল একটি বহুমুখী টুল যা অ্যারেগুলির মাধ্যমে পুনরাবৃত্তি করা, গণনা সম্পাদন করা এবং পুনরাবৃত্তির প্রয়োজন এমন অন্যান্য কাজ সম্পাদন করা।

জাভাস্ক্রিপ্ট যখন লুপ

জাভাস্ক্রিপ্টের লুপ whileআপনাকে বারবার কোডের একটি ব্লক চালানোর অনুমতি দেয় যতক্ষণ না একটি নির্দিষ্ট শর্ত সত্য হয়। এটি দরকারী যখন আপনি পূর্বে পুনরাবৃত্তির সঠিক সংখ্যা না জেনে একটি শর্তের উপর ভিত্তি করে লুপ করতে চান। এখানে একটি whileলুপের মৌলিক সিনট্যাক্স:

while (condition) {
    // Code to be executed as long as the condition is true
}

conditionযতক্ষণ পর্যন্ত মূল্যায়ন করা হয় ততক্ষণ লুপটি কার্যকর হতে থাকে true। এখানে একটি whileলুপ ব্যবহার করার একটি উদাহরণ:

let count = 0;

while (count < 5) {
    console.log("Count:", count);
    count++;
}

এই উদাহরণে, লুপটি count0 সেট দিয়ে শুরু হয়। লুপটি 5 এর কম না হওয়া পর্যন্ত কার্যকর হতে থাকে। countলুপের ভিতরে, এর মান countপ্রিন্ট করা হয় এবং তারপরে এটি 1 দ্বারা বৃদ্ধি পায়।

এটি নিশ্চিত করা গুরুত্বপূর্ণ যে একটি লুপে অবস্থা whileশেষ পর্যন্ত পরিণত হয় false। অন্যথায়, লুপটি অনির্দিষ্টকালের জন্য চলতে থাকবে, যার ফলে একটি অসীম লুপ হবে।

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

জাভাস্ক্রিপ্ট বিরতি বিবৃতি

breakজাভাস্ক্রিপ্টের বিবৃতিটি লুপ বা সুইচ স্টেটমেন্ট অবিলম্বে কার্যকর করা বন্ধ করতে ব্যবহৃত হয় । যখন সম্মুখীন হয়, breakবিবৃতিটি ঘেরা লুপ বা সুইচের “ব্রেক আউট” হয়, এবং প্রোগ্রামটি লুপ বা সুইচের পরে পরবর্তী বিবৃতি দিয়ে চলতে থাকে। breakলুপগুলির মধ্যে বিবৃতিটি কীভাবে ব্যবহৃত হয় তা এখানে :

for (let i = 0; i < 5; i++) {
    if (i === 3) {
        break;
    }
    console.log("Iteration:", i);
}

এই উদাহরণে, লুপটি থেকে i = 0তে পুনরাবৃত্তি করবে i = 2, কিন্তু যখন i3 হয়ে যায়, তখনbreak বিবৃতিটি সম্মুখীন হয়। এর ফলে লুপ অবিলম্বে বন্ধ হয়ে যায় এবং প্রোগ্রামটি লুপের পরের বিবৃতিতে চলে যায়।

একইভাবে, আপনি breakএকটি whileলুপের মধ্যে বিবৃতিটি ব্যবহার করতে পারেন:

let count = 0;

while (count < 5) {
    if (count === 3) {
        break;
    }
    console.log("Count:", count);
    count++;
}

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

জাভাস্ক্রিপ্ট অবিরত বিবৃতি

জাভাস্ক্রিপ্টের বিবৃতিটি continueলুপের মধ্যে ব্যবহার করা হয় বর্তমান পুনরাবৃত্তি এড়িয়ে যেতে এবং সরাসরি লুপের পরবর্তী পুনরাবৃত্তিতে যেতে। যখনcontinue , লুপটি সেই নির্দিষ্ট পুনরাবৃত্তির জন্য লুপের বডির মধ্যে অবশিষ্ট কোডের কোনোটি কার্যকর না করেই পরবর্তী পুনরাবৃত্তিতে চলে যায়।

continueলুপের মধ্যে বিবৃতিটি কীভাবে ব্যবহার করা হয় তা এখানে :


for (let i = 0; i < 5; i++) {
    if (i === 2) {
        continue;
    }
    console.log("Iteration:", i);
}

এই উদাহরণে, যখন i2 এর সমান, continueবিবৃতিটি সম্মুখীন হয়। ফলস্বরূপ, সেই পুনরাবৃত্তির জন্য লুপের শরীরের মধ্যে থাকা কোডটি এড়িয়ে যায় এবং লুপটি অবিলম্বে পরবর্তী পুনরাবৃত্তিতে চলে যায়। লুপের আউটপুট মানটি এড়িয়ে যাবে 2:

Iteration: 0
Iteration: 1
Iteration: 3
Iteration: 4

একইভাবে, আপনি continueএকটি whileলুপের মধ্যে বিবৃতিটি ব্যবহার করতে পারেন:


let count = 0;while (count < 5) {    count++;    if (count === 2) {        continue;    }    console.log("Count:", count);}

বিবৃতিটি continueউপযোগী হয় যখন আপনি নির্দিষ্ট শর্তের উপর ভিত্তি করে একটি লুপের নির্দিষ্ট পুনরাবৃত্তিকে বাইপাস করতে চান, বিবৃতিটির মতো অকালে সম্পূর্ণ লুপ থেকে প্রস্থান না করে break

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

switchজাভাস্ক্রিপ্টের বিবৃতি বিভিন্ন অবস্থার উপর ভিত্তি করে বিভিন্ন ক্রিয়া সম্পাদন করার একটি উপায় প্রদান করে । এটি একটি নিয়ন্ত্রণ কাঠামো যা আপনাকে একটি অভিব্যক্তি মূল্যায়ন করতে দেয় এবং তারপরে মিলিত ক্ষেত্রের উপর নির্ভর করে কোডের বিভিন্ন ব্লক কার্যকর করতে দেয়। এখানে একটি বিবৃতির মৌলিক সিনট্যাক্স রয়েছে switch:

switch (expression) {
    case value1:
        // Code to be executed if expression === value1
        break;
    case value2:
        // Code to be executed if expression === value2
        break;
    // More cases...
    default:
        // Code to be executed if none of the cases match
}
  • expressionপ্রতিটিতে উল্লিখিত মানগুলির সাথে মূল্যায়ন করা হয় এবং তুলনা করা হয় case
  • যদি একটি caseমান এর সাথে মেলে expression, কোডের সংশ্লিষ্ট ব্লকটি কার্যকর করা হয়।
  • বিবৃতিটি মিলিত কেসটি কার্যকর করার পরে ব্লক থেকে breakপ্রস্থান করতে ব্যবহৃত হয় ।switch
  • যদি কোনো caseমেলে না, ব্লকের ভিতরের কোডটি defaultকার্যকর করা হয় (ঐচ্ছিক)।

উদাহরণ:

let day = "Wednesday";

switch (day) {
    case "Monday":
        console.log("It's the start of the week.");
        break;
    case "Wednesday":
        console.log("It's the middle of the week.");
        break;
    case "Friday":
        console.log("It's almost the weekend.");
        break;
    default:
        console.log("It's a regular day.");
}

এই উদাহরণে, বিবৃতিটি মিলিত ক্ষেত্রের উপর ভিত্তি করে কোডের সংশ্লিষ্ট ব্লকের switchমান মূল্যায়ন করে এবং কার্যকর করে। dayযেহেতু day“বুধবার”, দ্বিতীয় কেসটি কার্যকর করা হয়েছে, এবং আউটপুট হবে “এটি সপ্তাহের মাঝামাঝি।”

বিবৃতিটি switchবিশেষভাবে উপযোগী হয় যখন আপনার একটি একক অভিব্যক্তির বিরুদ্ধে পরীক্ষা করার জন্য একাধিক শর্ত থাকে এবং আপনার কোডটি সংগঠিত এবং সহজে পড়তে চান।

জেএস ফাংশন

জাভাস্ক্রিপ্ট ফাংশন

জাভাস্ক্রিপ্টে, ফাংশন হল পুনঃব্যবহারযোগ্য কোডের ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে বা একটি মান প্রদান করে। তারা আপনাকে যুক্তিকে এনক্যাপসুলেট করার অনুমতি দেয়, আপনার কোডটিকে আরও মডুলার এবং বজায় রাখা সহজ করে তোলে। জাভাস্ক্রিপ্টে আপনি কীভাবে ফাংশনগুলিকে সংজ্ঞায়িত এবং ব্যবহার করেন তা এখানে:

ফাংশন ঘোষণা :

function greet(name) {
    console.log("Hello, " + name + "!");
}

greet("Alice"); // Outputs: Hello, Alice!

ফাংশন এক্সপ্রেশন :

const add = function(a, b) {
    return a + b;
};

console.log(add(3, 5)); // Outputs: 8

তীর ফাংশন (ES6):

const multiply = (x, y) => x * y;

console.log(multiply(4, 6)); // Outputs: 24

ফাংশন প্যারামিটার এবং রিটার্ন ভ্যালু :
ফাংশন প্যারামিটার (ইনপুট) এবং রিটার্ন মান (আউটপুট) গ্রহণ করতে পারে।

function square(number) {
    return number * number;
}

let result = square(5); // result is now 25

ফাংশন স্কোপ :
একটি ফাংশনের ভিতরে ঘোষিত ভেরিয়েবলগুলি সেই ফাংশনের জন্য স্কোপ করা হয় এবং বাইরে থেকে অ্যাক্সেস করা যায় না।

function example() {
    let localVar = "I'm inside the function";
    console.log(localVar);
}

example();
// console.log(localVar); // This would result in an error

ফাংশন উত্তোলন :
ফাংশন ঘোষণাগুলি তাদের সুযোগের শীর্ষে উত্তোলন করা হয়, তাই আপনি একটি ফাংশনকে সংজ্ঞায়িত করার আগে কল করতে পারেন।

greet("Bob"); // This works, even though greet is defined later

function greet(name) {
    console.log("Hello, " + name + "!");
}

কলব্যাক এবং উচ্চ-অর্ডার ফাংশন :
জাভাস্ক্রিপ্ট কলব্যাক এবং উচ্চ-অর্ডার ফাংশন সমর্থন করে, ফাংশনগুলিকে অন্যান্য ফাংশনে আর্গুমেন্ট হিসাবে পাস করার অনুমতি দেয়।

function doSomething(callback) {
    console.log("Doing something...");
    callback();
}

function finishTask() {
    console.log("Task finished!");
}

doSomething(finishTask);

ফাংশন ইনভোকেশন :
বন্ধনী ব্যবহার করে ফাংশনগুলিকে আহ্বান করা যেতে পারে (কথিত) ()

function sayHello() {
    console.log("Hello!");
}

sayHello(); // Outputs: Hello!

কোড পুনঃব্যবহারযোগ্যতা প্রচার করে এবং কোড কাঠামো উন্নত করে জাভাস্ক্রিপ্ট প্রোগ্রামিং-এ ফাংশন একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি সাধারণ গণনা থেকে জটিল অপারেশন পর্যন্ত বিস্তৃত কাজের জন্য ব্যবহার করা যেতে পারে।

জাভাস্ক্রিপ্ট এক্সপ্রেশন

জাভাস্ক্রিপ্টে, ফাংশন ঘোষণা এবং ফাংশন এক্সপ্রেশন উভয় ব্যবহার করে ফাংশন সংজ্ঞায়িত করা যেতে পারে। আসুন এই ধারণাগুলি আরও বিশদে অন্বেষণ করি:

ফাংশন ঘোষণা :
একটি ফাংশন ঘোষণা functionকীওয়ার্ড ব্যবহার করে একটি নামযুক্ত ফাংশন সংজ্ঞায়িত করে। উত্তোলনের কারণে আপনার কোডে ফাংশন ঘোষণার আগে এটি কল করা যেতে পারে।

function greet(name) {
    console.log("Hello, " + name + "!");
}

greet("Alice"); // Outputs: Hello, Alice!

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

const add = function(a, b) {
    return a + b;
};

console.log(add(3, 5)); // Outputs: 8

তীর ফাংশন (ES6):
তীর ফাংশনগুলি ফাংশন এক্সপ্রেশন লেখার আরও সংক্ষিপ্ত উপায়। তাদের একটি সংক্ষিপ্ত সিনট্যাক্স রয়েছে এবং স্বয়ংক্রিয়ভাবে আশেপাশের প্রসঙ্গের thisমান ক্যাপচার করে।

const multiply = (x, y) => x * y;

console.log(multiply(4, 6)); // Outputs: 24

উভয় ফাংশন ঘোষণা এবং অভিব্যক্তিতে, প্যারামিটারগুলিকে বন্ধনীর মধ্যে সংজ্ঞায়িত করা যেতে পারে। ফাংশন বিবৃতি ব্যবহার করে মান ফেরত দিতে পারে return

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

const subtract = function subtract(a, b) {
    return a - b;
};

console.log(subtract(10, 4)); // Outputs: 6

উচ্চ-ক্রম ফাংশন এবং কলব্যাক প্যাটার্ন তৈরি করার অনুমতি দিয়ে ফাংশনগুলিকে অন্যান্য ফাংশনে আর্গুমেন্ট হিসাবে পাস করা যেতে পারে। তারা জাভাস্ক্রিপ্ট প্রোগ্রামিংয়ে একটি কেন্দ্রীয় ভূমিকা পালন করে, মডুলার এবং পুনরায় ব্যবহারযোগ্য কোড সক্ষম করে।

জাভাস্ক্রিপ্ট ভেরিয়েবল স্কোপ

JavaScript ভেরিয়েবল স্কোপ নির্ধারণ করে যে আপনার কোডের মধ্যে একটি ভেরিয়েবল কোথায় অ্যাক্সেস করা বা পরিবর্তন করা যেতে পারে। দুটি প্রধান ধরনের পরিবর্তনশীল সুযোগ রয়েছে: বিশ্বব্যাপী সুযোগ এবং স্থানীয় (ফাংশন) সুযোগ।

  1. গ্লোবাল স্কোপ :
    যে কোনও ফাংশনের বাইরে ঘোষিত ভেরিয়েবলগুলিকে বিশ্বব্যাপী পরিসরে বিবেচনা করা হয়। ফাংশন সহ কোডের যেকোনো অংশ থেকে এগুলি অ্যাক্সেস করা যেতে পারে।

   let globalVar = "I'm a global variable";

   function exampleFunction() {
       console.log(globalVar); // Accessible here
   }

   exampleFunction();
   console.log(globalVar); // Accessible here as well
  1. স্থানীয় (ফাংশন) স্কোপ :
    একটি ফাংশনের মধ্যে ঘোষিত ভেরিয়েবলগুলি সেই ফাংশনের সুযোগের মধ্যে সীমাবদ্ধ। সেগুলি কেবলমাত্র সেই ফাংশনের মধ্যে অ্যাক্সেস এবং পরিবর্তন করা যেতে পারে।

   function localScopeExample() {
       let localVar = "I'm a local variable";
       console.log(localVar); // Accessible here
   }

   localScopeExample();
   // console.log(localVar); // This would result in an error

ফাংশন প্যারামিটারগুলিও সেই ফাংশনের জন্য স্কোপ করা হয়েছে:

   function calculateSum(a, b) {
       let sum = a + b;
       return sum;
   }

   console.log(calculateSum(3, 4)); // Outputs: 7
   // console.log(sum); // This would result in an error
  1. ব্লক স্কোপ (সহ letএবং const, ES6):
    ভেরিয়েবল ব্যবহার করে ঘোষণা করা হয়েছে letএবং constব্লক-স্কোপ করা হয়েছে। এর অর্থ হল তারা ব্লকের মধ্যে সীমাবদ্ধ (কোঁকড়া ধনুর্বন্ধনী দ্বারা আবদ্ধ {}) যেখানে তারা সংজ্ঞায়িত করা হয়েছে।

   if (true) {
       let blockVar = "I'm a block-scoped variable";
       console.log(blockVar); // Accessible here
   }

   // console.log(blockVar); // This would result in an error

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

জাভাস্ক্রিপ্ট উত্তোলন

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

  1. পরিবর্তনশীল উত্তোলন :
    ব্যবহার করে পরিবর্তনশীল ঘোষণা varউত্তোলন করা হয়, কিন্তু তাদের অ্যাসাইনমেন্ট নয়। এর ফলে ভেরিয়েবলের প্রারম্ভিক মানের সাথে “উদ্ধার” হতে পারে undefined

   console.log(name); // Outputs: undefined
   var name = "Alice";
   console.log(name); // Outputs: Alice

এটি লক্ষ্য করা গুরুত্বপূর্ণ যে শুধুমাত্র ঘোষণাটি nameউত্তোলন করা হয়, অ্যাসাইনমেন্ট নয়। এই কারণেই প্রথম console.logআউটপুট undefined

  1. ফাংশন উত্তোলন :
    ফাংশন ঘোষণাগুলি তাদের সম্পূর্ণ সংজ্ঞা সহ উত্তোলন করা হয়, তাই আপনি আপনার কোডে সংজ্ঞায়িত হওয়ার আগে একটি ফাংশন কল করতে পারেন।

   sayHello(); // Outputs: Hello!

   function sayHello() {
       console.log("Hello!");
   }

কারণ উত্তোলনের সময় পুরো ফাংশন ঘোষণা শীর্ষে সরানো হয়।

  1. ব্লক স্কোপ এবং উত্তোলন :
    ভেরিয়েবলের সাথে ঘোষিত letএবং constব্লক স্কোপ আছে এবং তাও উত্তোলন করা হয়, কিন্তু তাদের ঘোষণার সম্মুখীন না হওয়া পর্যন্ত সেগুলি আরম্ভ করা হয় না।

   console.log(blockVar); // Throws an error: Cannot access 'blockVar' before initialization
   let blockVar = "I'm a block-scoped variable";
   console.log(blockVar); // Outputs: I'm a block-scoped variable

সঠিকভাবে বোঝা না গেলে উত্তোলন বিভ্রান্তিকর এবং অপ্রত্যাশিত ফলাফলের দিকে নিয়ে যেতে পারে। ভেরিয়েবল এবং ফাংশনগুলি ব্যবহার করার আগে সর্বদা ঘোষণা করার পরামর্শ দেওয়া হয়, যদিও উত্তোলন আপনাকে আগে থেকে সেগুলি ব্যবহার করতে দেয়। এটি কোড পঠনযোগ্যতা বাড়ায় এবং উত্তোলন-সম্পর্কিত সমস্যাগুলির সম্মুখীন হওয়ার সম্ভাবনা হ্রাস করে৷

জাভাস্ক্রিপ্ট পুনরাবৃত্তি

JavaScript-এ Recursion হল একটি প্রোগ্রামিং কৌশল যেখানে একটি ফাংশন একটি সমস্যা সমাধানের জন্য নিজেকে কল করে। এটি একটি শক্তিশালী ধারণা যা সমস্যাগুলি সমাধান করতে ব্যবহৃত হয় যা ছোট, অনুরূপ উপ-সমস্যাগুলিতে বিভক্ত করা যেতে পারে। রিকার্সিভ ফাংশনের দুটি প্রধান অংশ রয়েছে: বেস কেস(গুলি) এবং রিকারসিভ কেস(গুলি)৷

এখানে একটি পুনরাবৃত্ত ফাংশনের একটি সাধারণ উদাহরণ যা একটি সংখ্যার ফ্যাক্টরিয়াল গণনা করে:

function factorial(n) {
    // Base case: factorial of 0 or 1 is 1
    if (n === 0 || n === 1) {
        return 1;
    }
    // Recursive case: n! = n * (n - 1)!
    return n * factorial(n - 1);
}

console.log(factorial(5)); // Outputs: 120

এই উদাহরণে, বেস কেস হল যখন n0 বা 1 হয়, এবং ফাংশনটি সরাসরি 1 প্রদান করে। রিকার্সিভ কেসটি nফ্যাক্টোরিয়ালের সাথে গুণিত করে গুণনীয়ক গণনা করে n - 1

পুনরাবৃত্তির মধ্যে একটি সমস্যাকে একই সমস্যার ছোট ছোট উদাহরণে ভাগ করা জড়িত। অসীম পুনরাবৃত্তি প্রতিরোধ করার জন্য বেস কেস(গুলি) সঠিকভাবে সংজ্ঞায়িত করা হয়েছে তা নিশ্চিত করা অপরিহার্য।

ফিবোনাচি সংখ্যা গণনা করার জন্য পুনরাবৃত্তি ব্যবহার করার আরেকটি উদাহরণ এখানে:

function fibonacci(n) {
    if (n <= 1) {
        return n;
    }
    return fibonacci(n - 1) + fibonacci(n - 2);
}

console.log(fibonacci(7)); // Outputs: 13

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

জেএস অবজেক্ট

জাভাস্ক্রিপ্ট অবজেক্ট

জাভাস্ক্রিপ্টে, অবজেক্ট হল একটি মৌলিক ডেটা স্ট্রাকচার যা আপনাকে মূল-মান জোড়া হিসাবে সম্পর্কিত ডেটা এবং ফাংশনগুলি সংরক্ষণ এবং সংগঠিত করতে দেয়। বস্তুগুলিকে বাস্তব-বিশ্বের সত্তা, ধারণা বা কাঠামোর প্রতিনিধিত্ব করতে ব্যবহৃত হয়, যা তাদেরকে ভাষার কেন্দ্রীয় অংশ করে তোলে। এখানে আপনি কিভাবে অবজেক্ট সংজ্ঞায়িত এবং ব্যবহার করেন:

অবজেক্ট লিটারাল সিনট্যাক্স :
আপনি অবজেক্ট আক্ষরিক সিনট্যাক্স ব্যবহার করে অবজেক্ট তৈরি করতে পারেন, যেখানে আপনি কোঁকড়া বন্ধনীর মধ্যে কী-মানের জোড়া সংজ্ঞায়িত করেন {}

let person = {
    firstName: "John",
    lastName: "Doe",
    age: 30,
    isStudent: false
};

অবজেক্টের বৈশিষ্ট্যগুলি অ্যাক্সেস করা :
আপনি ডট নোটেশন বা বন্ধনী নোটেশন ব্যবহার করে অবজেক্টের বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন।

console.log(person.firstName); // Outputs: John
console.log(person["lastName"]); // Outputs: Doe

বৈশিষ্ট্য যোগ করা এবং পরিবর্তন করা :
আপনি নতুন বৈশিষ্ট্য যোগ করতে পারেন বা অ্যাসাইনমেন্ট ব্যবহার করে বিদ্যমানগুলি সংশোধন করতে পারেন।

person.city = "New York";
person.age = 31;

অবজেক্ট মেথডঃ অবজেক্টের
মধ্যে কাজগুলোকে মেথড বলে। এগুলি বস্তুর ডেটা সম্পর্কিত ক্রিয়া সম্পাদন করতে ব্যবহার করা যেতে পারে।

let car = {
    make: "Toyota",
    model: "Camry",
    startEngine: function() {
        console.log("Engine started");
    }
};

car.startEngine(); // Outputs: Engine started

নেস্টেড অবজেক্ট :
আরও জটিল ডেটা স্ট্রাকচার তৈরি করতে অবজেক্টগুলিকে অন্যান্য অবজেক্টের মধ্যে নেস্ট করা যেতে পারে।

let student = {
    firstName: "Alice",
    lastName: "Johnson",
    info: {
        age: 20,
        major: "Computer Science"
    }
};

console.log(student.info.major); // Outputs: Computer Science

অবজেক্ট কনস্ট্রাক্টর :
আপনি কনস্ট্রাক্টর ফাংশন এবং newকীওয়ার্ড ব্যবহার করে অবজেক্ট তৈরি করতে পারেন।

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

let newPerson = new Person("Bob", "Smith");
console.log(newPerson.firstName); // Outputs: Bob

জাভাস্ক্রিপ্ট অবজেক্ট বহুমুখী এবং ভাষাতে বিভিন্ন ধরনের ধারণা এবং ডেটা স্ট্রাকচার মডেল করতে ব্যবহৃত হয়। তারা আধুনিক জাভাস্ক্রিপ্ট প্রোগ্রামিংয়ে একটি মূল ভূমিকা পালন করে এবং ওয়েব ডেভেলপমেন্টে ব্যাপকভাবে ব্যবহৃত হয়।

জাভাস্ক্রিপ্ট পদ্ধতি

জাভাস্ক্রিপ্টে, পদ্ধতিগুলি এমন ফাংশন যা বস্তুর বৈশিষ্ট্য হিসাবে সংজ্ঞায়িত করা হয়। তারা বস্তুগুলিকে তাদের ডেটা সম্পর্কিত ক্রিয়া বা গণনা করার অনুমতি দেয়। জাভাস্ক্রিপ্ট অবজেক্টে আপনি কীভাবে পদ্ধতিগুলি সংজ্ঞায়িত এবং ব্যবহার করেন তা এখানে:

সংজ্ঞায়িত পদ্ধতি :
আপনি একটি বৈশিষ্ট্য একটি ফাংশন বরাদ্দ করে একটি বস্তুর মধ্যে একটি পদ্ধতি সংজ্ঞায়িত করতে পারেন।

let person = {
    firstName: "John",
    lastName: "Doe",
    fullName: function() {
        return this.firstName + " " + this.lastName;
    }
};

অ্যাক্সেসিং পদ্ধতি :
আপনি ডট নোটেশন ব্যবহার করে পদ্ধতি কল করতে পারেন।

console.log(person.fullName()); // Outputs: John Doe

thisকীওয়ার্ড ব্যবহার করা :
একটি অবজেক্ট পদ্ধতির ভিতরে, thisকীওয়ার্ডটি বস্তুটিকেই বোঝায়। এটি আপনাকে একই বস্তুর বৈশিষ্ট্য এবং অন্যান্য পদ্ধতি অ্যাক্সেস করতে দেয়।

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

অবজেক্ট মেথড শর্ট সিনট্যাক্স (ES6):
আধুনিক জাভাস্ক্রিপ্টে, আপনি অবজেক্ট লিটারেলে পদ্ধতি সংজ্ঞায়িত করতে একটি ছোট সিনট্যাক্স ব্যবহার করতে পারেন।

let car = {
    make: "Toyota",
    startEngine() {
        console.log("Engine started");
    }
};

বস্তুর ডেটার সাথে সম্পর্কিত আচরণকে এনক্যাপসুলেট করতে পদ্ধতি ব্যবহার করা হয়। তারা কোড সংগঠিত করতে, পুনঃব্যবহারযোগ্যতা প্রচার করতে এবং আপনার কোডবেসকে আরও মডুলার করতে সহায়তা করে।

জাভাস্ক্রিপ্ট কনস্ট্রাক্টর ফাংশন

জাভাস্ক্রিপ্টে, একটি কনস্ট্রাক্টর ফাংশন একটি ব্লুপ্রিন্ট বা টেমপ্লেট ব্যবহার করে অবজেক্ট তৈরি এবং শুরু করার একটি উপায়। কনস্ট্রাক্টর ফাংশনগুলি একটি অবজেক্টের ধরণকে সংজ্ঞায়িত করতে ব্যবহৃত হয় এবং আপনি newকীওয়ার্ড ব্যবহার করে সেই বস্তুর প্রকারের একাধিক উদাহরণ তৈরি করতে পারেন। এগুলি সাধারণত অবজেক্ট ক্লাস সংজ্ঞায়িত করতে এবং বস্তুর বৈশিষ্ট্যগুলির জন্য প্রাথমিক মান প্রদান করতে ব্যবহৃত হয়।

এখানে আপনি কিভাবে একটি কনস্ট্রাক্টর ফাংশন তৈরি এবং ব্যবহার করেন:

একটি কনস্ট্রাক্টর ফাংশন সংজ্ঞায়িত করা :

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.fullName = function() {
        return this.firstName + " " + this.lastName;
    };
}

// Creating instances using the constructor
let person1 = new Person("John", "Doe");
let person2 = new Person("Alice", "Smith");

console.log(person1.fullName()); // Outputs: John Doe
console.log(person2.fullName()); // Outputs: Alice Smith

উপরের উদাহরণে, Personএকটি কনস্ট্রাক্টর ফাংশন যা প্যারামিটার হিসাবে নেয় firstNameএবং lastNameতৈরি করা বস্তুর বৈশিষ্ট্যগুলিতে সেগুলি বরাদ্দ করে। ব্যবহার করে তৈরি প্রতিটি উদাহরণের new Person()নিজস্ব বৈশিষ্ট্য এবং পদ্ধতির সেট থাকবে।

দক্ষ মেমরি ব্যবহারের জন্য প্রোটোটাইপ :
পূর্ববর্তী উদাহরণে, প্রতিটি উদাহরণের Personনিজস্ব পদ্ধতির অনুলিপি রয়েছে fullName। মেমরি সংরক্ষণ করতে এবং কর্মক্ষমতা অপ্টিমাইজ করতে, আপনি কনস্ট্রাক্টর ফাংশনের প্রোটোটাইপের পদ্ধতিগুলি সংজ্ঞায়িত করতে পারেন:

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

Person.prototype.fullName = function() {
    return this.firstName + " " + this.lastName;
};

এইভাবে, fullNameপদ্ধতিটি কনস্ট্রাক্টর থেকে তৈরি সমস্ত উদাহরণের মধ্যে ভাগ করা হয় Person

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

জাভাস্ক্রিপ্টে, একটি কনস্ট্রাক্টর ফাংশন একটি ব্লুপ্রিন্ট বা টেমপ্লেট ব্যবহার করে অবজেক্ট তৈরি এবং শুরু করার একটি উপায়। কনস্ট্রাক্টর ফাংশনগুলি একটি অবজেক্টের ধরণকে সংজ্ঞায়িত করতে ব্যবহৃত হয় এবং আপনি newকীওয়ার্ড ব্যবহার করে সেই বস্তুর প্রকারের একাধিক উদাহরণ তৈরি করতে পারেন। এগুলি সাধারণত অবজেক্ট ক্লাস সংজ্ঞায়িত করতে এবং বস্তুর বৈশিষ্ট্যগুলির জন্য প্রাথমিক মান প্রদান করতে ব্যবহৃত হয়।

এখানে আপনি কিভাবে একটি কনস্ট্রাক্টর ফাংশন তৈরি এবং ব্যবহার করেন:

একটি কনস্ট্রাক্টর ফাংশন সংজ্ঞায়িত করা :

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.fullName = function() {
        return this.firstName + " " + this.lastName;
    };
}

// Creating instances using the constructor
let person1 = new Person("John", "Doe");
let person2 = new Person("Alice", "Smith");

console.log(person1.fullName()); // Outputs: John Doe
console.log(person2.fullName()); // Outputs: Alice Smith

উপরের উদাহরণে, Personএকটি কনস্ট্রাক্টর ফাংশন যা প্যারামিটার হিসাবে নেয় firstNameএবং lastNameতৈরি করা বস্তুর বৈশিষ্ট্যগুলিতে সেগুলি বরাদ্দ করে। ব্যবহার করে তৈরি প্রতিটি উদাহরণের new Person()নিজস্ব বৈশিষ্ট্য এবং পদ্ধতির সেট থাকবে।

দক্ষ মেমরি ব্যবহারের জন্য প্রোটোটাইপ :
পূর্ববর্তী উদাহরণে, প্রতিটি উদাহরণের Personনিজস্ব পদ্ধতির অনুলিপি রয়েছে fullName। মেমরি সংরক্ষণ করতে এবং কর্মক্ষমতা অপ্টিমাইজ করতে, আপনি কনস্ট্রাক্টর ফাংশনের প্রোটোটাইপের পদ্ধতিগুলি সংজ্ঞায়িত করতে পারেন:

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

Person.prototype.fullName = function() {
    return this.firstName + " " + this.lastName;
};

এইভাবে, fullNameপদ্ধতিটি কনস্ট্রাক্টর থেকে তৈরি সমস্ত উদাহরণের মধ্যে ভাগ করা হয় Person

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

জাভাস্ক্রিপ্ট গেটার এবং সেটার্স

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

গেটার :
একটি সম্পত্তির মূল্য পুনরুদ্ধার করতে একটি গেটার পদ্ধতি ব্যবহার করা হয়। এটি getপ্রপার্টির নাম অনুসরণ করে কীওয়ার্ড ব্যবহার করে সংজ্ঞায়িত করা হয়েছে।

const person = {
    firstName: "John",
    lastName: "Doe",
    get fullName() {
        return this.firstName + " " + this.lastName;
    }
};

console.log(person.fullName); // Outputs: John Doe

এই উদাহরণে, fullNameএকটি গেটার পদ্ধতি যা সম্পূর্ণ নাম firstNameএবং lastNameবৈশিষ্ট্যের উপর ভিত্তি করে গণনা করে।

সেটার :
একটি সম্পত্তির মান পরিবর্তন করতে একটি সেটার পদ্ধতি ব্যবহার করা হয়। এটি setপ্রপার্টির নাম অনুসরণ করে কীওয়ার্ড ব্যবহার করে সংজ্ঞায়িত করা হয়েছে।

const temperature = {
    _celsius: 0, // Conventionally, underscore indicates private property
    set celsius(value) {
        if (value < -273.15) {
            console.error("Temperature is below absolute zero!");
        } else {
            this._celsius = value;
        }
    },
    get celsius() {
        return this._celsius;
    },
    get fahrenheit() {
        return this._celsius * 9 / 5 + 32;
    },
    set fahrenheit(value) {
        this._celsius = (value - 32) * 5 / 9;
    }
};

temperature.celsius = 25; // Calls the setter
console.log(temperature.fahrenheit); // Calls the getter and outputs: 77

এই উদাহরণে, celsiusএবং fahrenheitগেটার এবং সেটার পদ্ধতি যা ইনপুট যাচাই করার সময় তাপমাত্রা রূপান্তর করার অনুমতি দেয়।

Getters এবং setters সম্পত্তি আচরণ এনক্যাপসুলেট করার একটি মার্জিত উপায় প্রদান করে এবং বস্তুর বৈশিষ্ট্যগুলিতে নিয়ন্ত্রিত অ্যাক্সেস যোগ করে। এগুলি প্রায়শই ব্যক্তিগত সম্পত্তির সাথে একত্রে ব্যবহৃত হয়, যা একটি অগ্রণী আন্ডারস্কোর দ্বারা নির্দেশিত হয়, সম্পত্তির মিথস্ক্রিয়া পরিচালনা করতে এবং আরও নমনীয় এবং রক্ষণাবেক্ষণযোগ্য কোড প্রদান করতে।

জাভাস্ক্রিপ্ট প্রোটোটাইপ

জাভাস্ক্রিপ্টে, প্রোটোটাইপ অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং সম্পর্কিত একটি অপরিহার্য ধারণা। এটি এমন একটি প্রক্রিয়া যার মাধ্যমে বস্তুগুলি অন্যান্য বস্তুর বৈশিষ্ট্য এবং পদ্ধতির উত্তরাধিকারী হতে পারে। দক্ষ মেমরি ব্যবহার এবং কোড সংগঠনের জন্য প্রোটোটাইপগুলি বোঝা অত্যন্ত গুরুত্বপূর্ণ।

প্রোটোটাইপ চেইন :
জাভাস্ক্রিপ্টের প্রতিটি বস্তুর একটি প্রোটোটাইপ রয়েছে, যা অন্য একটি বস্তু যা থেকে বর্তমান অবজেক্টটি বৈশিষ্ট্য এবং পদ্ধতিগুলি উত্তরাধিকারসূত্রে পায়। এটি প্রোটোটাইপের একটি চেইন তৈরি করে, যা প্রোটোটাইপ চেইন নামে পরিচিত।

প্রোটোটাইপ অবজেক্ট :
একটি বস্তুর প্রোটোটাইপ __proto__সম্পত্তি বা Object.getPrototypeOf()পদ্ধতি ব্যবহার করে অ্যাক্সেস করা যেতে পারে।

const person = {
    firstName: "John",
    lastName: "Doe"
};

const employee = {
    jobTitle: "Developer"
};

employee.__proto__ = person;

console.log(employee.firstName); // Outputs: John
console.log(employee.lastName);  // Outputs: Doe

এই উদাহরণে, বস্তুটি তার প্রোটোটাইপ চেইনের মাধ্যমে বস্তু employeeথেকে বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে পায় ।person

প্রোটোটাইপ এবং কনস্ট্রাক্টর :
আপনি যখন কনস্ট্রাক্টর ফাংশন ব্যবহার করে অবজেক্ট তৈরি করেন, তৈরি করা অবজেক্টের প্রোটোটাইপ স্বয়ংক্রিয়ভাবে কনস্ট্রাক্টরের প্রোটোটাইপ প্রপার্টিতে সেট হয়ে যায়।

function Person(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
}

Person.prototype.fullName = function() {
    return this.firstName + " " + this.lastName;
};

const person = new Person("Alice", "Johnson");

console.log(person.fullName()); // Outputs: Alice Johnson

এই উদাহরণে, Person.prototypeঅবজেক্টে পদ্ধতিটি রয়েছে fullNameএবং Personকনস্ট্রাক্টর ব্যবহার করে তৈরি করা সমস্ত উদাহরণ তাদের প্রোটোটাইপ চেইনের মাধ্যমে এই পদ্ধতির উত্তরাধিকারী হয়।

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

জাভাস্ক্রিপ্ট কীভাবে উত্তরাধিকার প্রয়োগ করে এবং আপনাকে দক্ষ, এক্সটেনসিবল এবং রক্ষণাবেক্ষণযোগ্য কোড তৈরি করতে দেয় তার জন্য প্রোটোটাইপগুলি মৌলিক।

জাভাস্ক্রিপ্ট প্রকার

জাভাস্ক্রিপ্ট অ্যারে

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

অ্যারে তৈরি করা :
অ্যারে আক্ষরিক স্বরলিপি ব্যবহার করে অ্যারে তৈরি করা যেতে পারে, যেখানে উপাদানগুলি বর্গাকার বন্ধনীর মধ্যে আবদ্ধ থাকে []

let fruits = ["apple", "banana", "orange"];

অ্যারে উপাদানগুলি অ্যাক্সেস করা :
অ্যারে উপাদানগুলি শূন্য-ভিত্তিক সূচী ব্যবহার করে অ্যাক্সেস করা হয়।

console.log(fruits[0]); // Outputs: apple
console.log(fruits[1]); // Outputs: banana

অ্যারে উপাদানগুলি পরিবর্তন করা :
আপনি অ্যাসাইনমেন্ট ব্যবহার করে অ্যারে উপাদানগুলি পরিবর্তন করতে পারেন।

fruits[1] = "grape";
console.log(fruits); // Outputs: ["apple", "grape", "orange"]

অ্যারের দৈর্ঘ্য :
সম্পত্তি lengthএকটি অ্যারের উপাদানের সংখ্যা প্রদান করে।

console.log(fruits.length); // Outputs: 3

উপাদান যোগ করা এবং অপসারণ করা :
অ্যারেতে উপাদান যোগ বা অপসারণের বিভিন্ন পদ্ধতি রয়েছে। উদাহরণস্বরূপ, আপনি push()অ্যারের শেষে একটি উপাদান যোগ করতে এবং pop()শেষ উপাদানটি সরাতে ব্যবহার করতে পারেন।

fruits.push("pear");
console.log(fruits); // Outputs: ["apple", "grape", "orange", "pear"]

fruits.pop();
console.log(fruits); // Outputs: ["apple", "grape", "orange"]

অ্যারেগুলির উপর পুনরাবৃত্তি :
আপনি অ্যারের উপাদানগুলির উপর পুনরাবৃত্তি করার forমতো লুপগুলি ব্যবহার করতে পারেন।forEach()

for (let i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}

fruits.forEach(function(fruit) {
    console.log(fruit);
});

অ্যারে পদ্ধতি :
জাভাস্ক্রিপ্ট অ্যারেতে অনেকগুলি অন্তর্নির্মিত পদ্ধতি রয়েছে, যেমন push()pop()shift()unshift()splice()concat()slice(), এবং আরও অনেক কিছু, যা আপনাকে দক্ষতার সাথে অ্যারেগুলিকে ম্যানিপুলেট এবং রূপান্তর করতে দেয়।

অ্যারেগুলি জাভাস্ক্রিপ্ট প্রোগ্রামিংয়ের একটি অপরিহার্য অংশ এবং সাধারণ ডেটা স্টোরেজ থেকে জটিল ডেটা ম্যানিপুলেশন কাজ পর্যন্ত বিভিন্ন পরিস্থিতিতে ব্যাপকভাবে ব্যবহৃত হয়।

জাভাস্ক্রিপ্ট মাল্টিডাইমেনশনাল অ্যারে

জাভাস্ক্রিপ্টে প্রথাগত অর্থে অন্তর্নির্মিত বহুমাত্রিক অ্যারে নেই। পরিবর্তে, এটি একটি কাঠামো তৈরি করতে অ্যারের অ্যারে ব্যবহার করে যা বহুমাত্রিকতার অনুকরণ করে। এর মানে হল ম্যাট্রিক্সের মতো সারি এবং কলামের প্রতিনিধিত্ব করার জন্য আপনার অ্যারেগুলির মধ্যে অ্যারে থাকতে পারে।

আপনি কীভাবে জাভাস্ক্রিপ্টে একটি “বহুমাত্রিক” অ্যারে তৈরি করতে এবং কাজ করতে পারেন তা এখানে:

let matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

console.log(matrix[0][0]); // Outputs: 1
console.log(matrix[1][2]); // Outputs: 6

এই উদাহরণে, matrixঅ্যারের একটি অ্যারে। প্রতিটি অভ্যন্তরীণ অ্যারে ম্যাট্রিক্সের একটি সারি প্রতিনিধিত্ব করে। আপনি সূচকের দুটি সেট ব্যবহার করে উপাদানগুলি অ্যাক্সেস করেন: প্রথম সূচকটি সারি নির্দেশ করে এবং দ্বিতীয় সূচকটি কলাম নির্দেশ করে।

আপনি এই “বহুমাত্রিক” অ্যারেগুলিতে বিভিন্ন ক্রিয়াকলাপ সম্পাদন করতে পারেন, যেমন সারি এবং কলামগুলির মাধ্যমে লুপ করা:

for (let row = 0; row < matrix.length; row++) {
    for (let col = 0; col < matrix[row].length; col++) {
        console.log(matrix[row][col]);
    }
}

এই পদ্ধতিটি আপনাকে জাভাস্ক্রিপ্টের স্ট্যান্ডার্ড অ্যারে ডেটা স্ট্রাকচার ব্যবহার করার সময় বহুমাত্রিক অ্যারেগুলির প্রভাব অর্জন করতে দেয়। এটি লক্ষণীয় যে বড় এবং আরও জটিল ম্যাট্রিক্স পরিচালনার জন্য আরও উন্নত কৌশল বা গাণিতিক গণনার জন্য ডিজাইন করা লাইব্রেরির ব্যবহার প্রয়োজন হতে পারে।

জাভাস্ক্রিপ্ট স্ট্রিং

জাভাস্ক্রিপ্টে, স্ট্রিংগুলি পাঠ্যকে উপস্থাপন করতে ব্যবহৃত অক্ষরের ক্রম। স্ট্রিংগুলিতে অক্ষর, সংখ্যা, চিহ্ন এবং এমনকি স্পেস থাকতে পারে। এগুলি ভাষার মৌলিক ডেটা প্রকারগুলির মধ্যে একটি এবং পাঠ্য ডেটা নিয়ে কাজ করার জন্য ব্যাপকভাবে ব্যবহৃত হয়।

স্ট্রিং তৈরি করা : একক উদ্ধৃতি ( ), দ্বিগুণ উদ্ধৃতি ( ), বা ব্যাকটিক্স ( )
ব্যবহার করে স্ট্রিং তৈরি করা যেতে পারে ।'"`

let singleQuote = 'Hello, world!';
let doubleQuote = "Hello, world!";
let backticks = `Hello, world!`;

এস্কেপিং ক্যারেক্টারস :
আপনি যদি একটি স্ট্রিং এর মধ্যে বিশেষ অক্ষর অন্তর্ভুক্ত করতে চান, তাহলে আপনি ব্যাকস্ল্যাশ ( \) অক্ষর ব্যবহার করে সেগুলি এড়িয়ে যেতে পারেন।

let specialString = "This is a \"quoted\" string.";

স্ট্রিং দৈর্ঘ্য : একটি স্ট্রিং এর
বৈশিষ্ট্য lengthস্ট্রিং এর অক্ষর সংখ্যা প্রদান করে।

let greeting = "Hello!";
console.log(greeting.length); // Outputs: 6

অক্ষর অ্যাক্সেস করা :
একটি স্ট্রিংয়ের মধ্যে পৃথক অক্ষর শূন্য-ভিত্তিক সূচী ব্যবহার করে অ্যাক্সেস করা যেতে পারে।

let message = "Hello, world!";
console.log(message[0]); // Outputs: H
console.log(message[7]); // Outputs: w

স্ট্রিং পদ্ধতি :
জাভাস্ক্রিপ্ট স্ট্রিংগুলির সাথে ম্যানিপুলেট এবং কাজ করার জন্য বিভিন্ন পদ্ধতি প্রদান করে। কিছু সাধারণ পদ্ধতির মধ্যে রয়েছে toUpperCase()toLowerCase()concat()slice()substring()indexOf()replace(), এবং আরও অনেক কিছু।

let text = "Hello, JavaScript!";
console.log(text.toUpperCase()); // Outputs: HELLO, JAVASCRIPT!
console.log(text.indexOf("JavaScript")); // Outputs: 7

স্ট্রিং সংযোগ :
আপনি +অপারেটর ব্যবহার করে স্ট্রিং সংযুক্ত করতে পারেন।

let firstName = "John";
let lastName = "Doe";
let fullName = firstName + " " + lastName;
console.log(fullName); // Outputs: John Doe

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

লুপে…এর জন্য জাভাস্ক্রিপ্ট

for...inজাভাস্ক্রিপ্টের লুপ একটি বস্তুর গণনাযোগ্য বৈশিষ্ট্যের উপর পুনরাবৃত্তি করতে ব্যবহৃত হয় । এটি একটি বস্তুর কী বা বৈশিষ্ট্যগুলির উপর পুনরাবৃত্তি করার জন্য বিশেষভাবে কার্যকর। যাইহোক, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে for...inলুপ অ্যারেগুলির উপর পুনরাবৃত্তি করার জন্য ব্যবহার করা উচিত নয়, কারণ এটি অপ্রত্যাশিত আচরণের দিকে নিয়ে যেতে পারে।

এখানে লুপের মৌলিক সিনট্যাক্স আছে for...in:

for (variable in object) {
    // code to be executed for each property
}
  • variableবস্তুর একটি সম্পত্তির নাম প্রতিনিধিত্ব করে 
  • objectআপনি উপর পুনরাবৃত্তি করতে চান বস্তু .

ব্যবহারের উদাহরণfor...inঅবজেক্টের বৈশিষ্ট্যগুলিকে পুনরাবৃত্তি করতে লুপ

let person = {
    firstName: "John",
    lastName: "Doe",
    age: 30
};

for (let key in person) {
    console.log(key + ": " + person[key]);
}

এই উদাহরণে, লুপ বস্তুর বৈশিষ্ট্যের উপর পুনরাবৃত্তি করে personএবং কী-মান জোড়া আউটপুট করে।

সতর্কতা এবং সীমাবদ্ধতা :

  • লুপটি for...inপ্রোটোটাইপ চেইন থেকে উত্তরাধিকারসূত্রে পাওয়া সহ সমস্ত গণনাযোগ্য বৈশিষ্ট্যের উপর পুনরাবৃত্তি করে। উত্তরাধিকারসূত্রে প্রাপ্ত বৈশিষ্ট্যের উপর অনিচ্ছাকৃত পুনরাবৃত্তি এড়াতে, hasOwnProperty()পদ্ধতি ব্যবহার করুন।
  • পুনরাবৃত্তির ক্রম নিশ্চিত করা হয় না, কারণ জাভাস্ক্রিপ্ট অবজেক্টের বৈশিষ্ট্যগুলির জন্য নির্দিষ্ট ক্রম নেই।
  • for...inঅ্যারেগুলির উপর পুনরাবৃত্তি করার জন্য লুপ ব্যবহার করা এড়িয়ে চলুন । forঅন্যান্য লুপ যেমন , forEach, বা for...ofঅ্যারের জন্য ব্যবহার করা ভাল ।

let numbers = [1, 2, 3, 4, 5];

for (let index in numbers) {
    console.log(numbers[index]); // Avoid using for arrays
}

অ্যারেগুলির উপর পুনরাবৃত্তি করার জন্য, এটির মতো অন্যান্য লুপ নির্মাণগুলি ব্যবহার করার পরামর্শ দেওয়া হয়forforEachঅ্যারেগুলির উপর পুনরাবৃত্তি করার জন্য, আরও ভাল নিয়ন্ত্রণ এবং স্পষ্টতার জন্য লুপ বা

জাভাস্ক্রিপ্ট নম্বর

জাভাস্ক্রিপ্টে, সংখ্যা হল একটি মৌলিক ডেটা টাইপ যা সাংখ্যিক মান, উভয় পূর্ণসংখ্যা এবং ফ্লোটিং-পয়েন্ট সংখ্যা (দশমিক সংখ্যা) উপস্থাপন করতে ব্যবহৃত হয়। সংখ্যাগুলি গাণিতিক গণনা, তুলনা এবং বিভিন্ন গাণিতিক ক্রিয়াকলাপের জন্য ব্যবহৃত হয়। জাভাস্ক্রিপ্টে সংখ্যার সাথে আপনি কীভাবে কাজ করেন তা এখানে:

সংখ্যা তৈরি করা :
আপনি সংখ্যাসূচক আক্ষরিক লিখে সরাসরি সংখ্যা তৈরি করতে পারেন।

let integerNumber = 42;
let floatingPointNumber = 3.14;

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

let sum = 10 + 20; // 30
let difference = 50 - 30; // 20
let product = 5 * 4; // 20
let quotient = 15 / 3; // 5
let remainder = 17 % 5; // 2 (remainder of division)

ম্যাথ অবজেক্ট : জাভাস্ক্রিপ্ট আরও উন্নত গাণিতিক ক্রিয়াকলাপের জন্য অন্তর্নির্মিত পদ্ধতি সহ
একটি বস্তু সরবরাহ করে ।Math

let squareRoot = Math.sqrt(25); // 5
let roundedValue = Math.round(3.7); // 4
let randomValue = Math.random(); // Random decimal between 0 and 1

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

console.log(0.1 + 0.2); // Outputs: 0.30000000000000004

স্ট্রিংগুলিকে সংখ্যায় রূপান্তর করা : আপনি এবং
যেমন ফাংশন ব্যবহার করে সংখ্যাসূচক মান ধারণকারী স্ট্রিংগুলিকে সংখ্যায় রূপান্তর করতে পারেন parseInt()parseFloat()

let numericString = "42";
let numericValue = parseInt(numericString); // 42

NaN (Not-a-Number) :
NaNএকটি বিশেষ মান যা সাংখ্যিক ক্রিয়াকলাপে একটি অনির্ধারিত বা অপ্রস্তুতযোগ্য মান উপস্থাপন করে।

console.log(0 / 0); // Outputs: NaN

সংখ্যাগুলি জাভাস্ক্রিপ্টের একটি মৌলিক অংশ, যা গণনা, ডেটা ম্যানিপুলেশন এবং প্রোগ্রামিংয়ে আরও অনেক কিছু করার জন্য অপরিহার্য।

জাভাস্ক্রিপ্ট চিহ্ন

জাভাস্ক্রিপ্টে, প্রতীক হল একটি আদিম ডেটা টাইপ যা ECMAScript 2015 (ES6) এ চালু করা হয়েছে। এগুলি অনন্য এবং অপরিবর্তনীয় মানগুলি প্রায়ই নামকরণের দ্বন্দ্ব এবং অনিচ্ছাকৃত সম্পত্তি ওভাররাইড এড়াতে বস্তুর সম্পত্তি কী হিসাবে ব্যবহৃত হয়। প্রাইভেট অবজেক্ট সদস্য এবং মেটাডেটা তৈরি করার জন্য প্রতীকগুলি আদর্শ।

জাভাস্ক্রিপ্টে আপনি কীভাবে প্রতীক তৈরি এবং ব্যবহার করতে পারেন তা এখানে:

চিহ্ন তৈরি করা :
আপনি Symbol()ফাংশন ব্যবহার করে একটি প্রতীক তৈরি করতে পারেন। প্রতিটি প্রতীক অনন্য এবং প্রতিলিপি করা যাবে না।

const symbol1 = Symbol();
const symbol2 = Symbol("description");

অবজেক্ট প্রপার্টি হিসাবে প্রতীক ব্যবহার করা :
প্রতীকগুলি বস্তুর বৈশিষ্ট্য কী হিসাবে ব্যবহার করা যেতে পারে। for...inতারা loops মধ্যে গণনাযোগ্য নয় এবং Object.keys().

const myObject = {};

const key = Symbol("myKey");
myObject[key] = "Hello, Symbol!";
console.log(myObject[key]); // Outputs: Hello, Symbol!

প্রতীক বৈশিষ্ট্য এবং অবজেক্ট লিটারাল :
অবজেক্ট লিটারেলে, আপনি গণনাকৃত সম্পত্তির নাম হিসাবে একটি প্রতীক ব্যবহার করতে বর্গাকার বন্ধনী ব্যবহার করতে পারেন।

const dynamicKey = Symbol("dynamicKey");
const myObject = {
    [dynamicKey]: "Computed property value"
};
console.log(myObject[dynamicKey]); // Outputs: Computed property value

সুপরিচিত প্রতীক :
জাভাস্ক্রিপ্ট সুপরিচিত প্রতীকগুলির একটি সেট সরবরাহ করে যা বস্তুর আচরণের কাস্টমাইজেশন সক্ষম করে। উদাহরণস্বরূপ, Symbol.iteratorএকটি বস্তুর ডিফল্ট পুনরাবৃত্তিকারী সংজ্ঞায়িত করতে ব্যবহৃত হয়।

const myArray = [1, 2, 3];
const iterator = myArray[Symbol.iterator]();

console.log(iterator.next().value); // Outputs: 1
console.log(iterator.next().value); // Outputs: 2
console.log(iterator.next().value); // Outputs: 3

প্রতীক রেজিস্ট্রি :
সিম্বল রেজিস্ট্রিতে সিম্বল সংরক্ষণ করা হয়। পুনরুদ্ধার ব্যবহার করে Symbol.for()বা রেজিস্ট্রি থেকে একটি প্রতীক তৈরি করে।

const symbol1 = Symbol.for("mySymbol");
const symbol2 = Symbol.for("mySymbol");

console.log(symbol1 === symbol2); // Outputs: true

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

জাভাস্ক্রিপ্ট ব্যতিক্রম এবং মডিউল

জাভাস্ক্রিপ্ট ব্যতিক্রম

ব্যতিক্রম হল জাভাস্ক্রিপ্ট (এবং অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ) রানটাইম ত্রুটি এবং অস্বাভাবিক পরিস্থিতি সুন্দরভাবে পরিচালনা করার একটি পদ্ধতি। আপনার কোড কার্যকর করার সময় একটি ত্রুটি ঘটলে, একটি ব্যতিক্রম নিক্ষেপ করা হয়, যা প্রোগ্রামের স্বাভাবিক প্রবাহকে ব্যাহত করতে পারে। জাভাস্ক্রিপ্ট প্রদান করে try,catch , finally, এবং throwবিবৃতি প্রদান করে:

  • try: একটি ব্যতিক্রম ঘটতে পারে এমন কোড রয়েছে৷
  • catch: ব্যতিক্রম ক্যাচ এবং পরিচালনা করে, একটি ব্যতিক্রম ঘটলে আপনাকে নির্দিষ্ট কোড চালানোর অনুমতি দেয়।
  • finally: এমন কোড রয়েছে যা সর্বদা চলবে, একটি ব্যতিক্রম নিক্ষেপ করা হোক বা না হোক।
  • throw: একটি নতুন ব্যতিক্রম তৈরি করে এবং এটি নিক্ষেপ করে।

এখানে trycatch, এবং ব্যবহার করার একটি উদাহরণ finally:

try {
    // Code that might throw an exception
    let result = 10 / 0; // This will throw a division by zero error
} catch (error) {
    console.error("An error occurred:", error);
} finally {
    console.log("Cleanup code, always executed");
}

জাভাস্ক্রিপ্ট চেষ্টা করুন…ক্যাচ…অবশেষে

দ্যtry...catch...finally ব্যতিক্রমগুলি পরিচালনা করতে জাভাস্ক্রিপ্টে ব্যবহৃত হয়, যা আপনার কোড কার্যকর করার সময় ঘটে যাওয়া ত্রুটি। এটি আপনাকে ত্রুটিগুলি সুন্দরভাবে পরিচালনা করতে এবং ব্যতিক্রম ঘটলেও আপনার প্রোগ্রামের প্রবাহ নিয়ন্ত্রণ করতে দেয়। এখানে কিভাবে এটা কাজ করে:

চেষ্টা করুন :
ব্লকটিতে tryএমন কোড রয়েছে যা আপনি ব্যতিক্রমের জন্য নিরীক্ষণ করতে চান। এই ব্লকের মধ্যে ব্যতিক্রম ঘটলে, নিয়ন্ত্রণ অবিলম্বে ব্লকে স্থানান্তরিত হয় catch

catch :
ব্লকটি catchব্যতিক্রমগুলি ধরতে এবং পরিচালনা করতে ব্যবহৃত হয়। এটিতে কোড রয়েছে যা ব্লকের মধ্যে একটি ব্যতিক্রম ঘটলে কার্যকর হবে try। আপনি ব্লকে একটি ত্রুটি অবজেক্ট প্রদান করতে পারেন catch, যা নিক্ষেপ করা ব্যতিক্রমকে উপস্থাপন করে।

অবশেষে :
Thefinally ঐচ্ছিক এবং এতে কোড রয়েছে যা একটি ব্যতিক্রম নিক্ষেপ করা হয়েছে কিনা তা বিবেচনা না করেই চলবে। এটি পরিচ্ছন্নতার ক্রিয়াকলাপের জন্য ব্যবহৃত হয় যা যাই হোক না কেন সম্পাদন করা দরকার।

এখানে একটি উদাহরণ:

try {
    // Code that might throw an exception
    let result = 10 / 0; // This will throw a division by zero error
} catch (error) {
    // Code to handle the exception
    console.error("An error occurred:", error);
} finally {
    // Code that will run regardless of whether an exception was thrown
    console.log("Cleanup code, always executed");
}

এই উদাহরণে, যদি ডিভিশন অপারেশন চলাকালীন একটি ব্যতিক্রম ঘটে, নিয়ন্ত্রণটি ব্লকে স্থানান্তরিত হয় catch। যদি কোন ব্যতিক্রম ঘটে না, catchব্লকটি এড়িয়ে যায়। ব্লক finallyসবসময় সঞ্চালিত হয়, পরিচ্ছন্নতা অপারেশন জন্য একটি জায়গা প্রদান.

ব্যবহার করা try...catch...finallyএকটি শক্তিশালী উপায় নিশ্চিত করার জন্য যে আপনার কোডটি ব্যতিক্রমগুলিকে সুন্দরভাবে পরিচালনা করে এবং ত্রুটি ঘটলে প্রোগ্রামটি ক্র্যাশ না করে। এটি বিশেষত সেইসব পরিস্থিতিতে উপযোগী যেখানে আপনাকে রিসোর্স ক্লিনআপ বা ত্রুটির মুখে সুন্দর অবনতি নিশ্চিত করতে হবে।

জাভাস্ক্রিপ্ট নিক্ষেপ বিবৃতি

জাভাস্ক্রিপ্টে, throwবিবৃতিটি ম্যানুয়ালি আপনার কোডে একটি ব্যতিক্রম (ত্রুটি) তৈরি করতে ব্যবহৃত হয়। আপনি ব্যবহার করতে পারেনthrow বিবৃতিটি ব্যবহার করতে পারেন সংকেত দিতে যে অপ্রত্যাশিত বা ব্যতিক্রমী কিছু ঘটেছে এবং নির্দেশ করতে যে আপনার প্রোগ্রামের স্বাভাবিক প্রবাহ ব্যাহত হবে।

বিবৃতিটি কীভাবে কাজ করে তা এখানে throw:

function divide(a, b) {
    if (b === 0) {
        throw new Error("Division by zero is not allowed");
    }
    return a / b;
}

try {
    let result = divide(10, 0);
    console.log(result);
} catch (error) {
    console.error("An error occurred:", error.message);
}

এই উদাহরণে, divideভাজক b0 হলে ফাংশনটি একটি কাস্টম বার্তা সহ একটি ত্রুটি ছুড়ে দেয়। ব্লকটি আর্গুমেন্ট সহ ফাংশনটিকে tryকল করার চেষ্টা করে এবং যার ফলে একটি ত্রুটি থ্রো করা হয়। ব্লকটি ত্রুটিটি ধরে এবং সম্পত্তি ব্যবহার করে ত্রুটি বার্তা প্রদর্শন করে।divide100catcherror.message

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

জাভাস্ক্রিপ্ট মডিউল

জাভাস্ক্রিপ্ট মডিউলগুলি পৃথক ফাইলগুলিতে কোড সংগঠিত করার একটি উপায় প্রদান করে, এটি পরিচালনা, পুনঃব্যবহার এবং বজায় রাখা সহজ করে। মডিউলগুলি কোড এবং ডেটা এনক্যাপসুলেট করে, আপনাকে স্বয়ংসম্পূর্ণ উপাদান তৈরি করতে দেয় যা আপনার কোডবেসের অন্যান্য অংশে আমদানি এবং ব্যবহার করা যেতে পারে। ES6 (ECMAScript 2015) জাভাস্ক্রিপ্টে মডিউলগুলির জন্য নেটিভ সমর্থন চালু করেছে।

এখানে আপনি কিভাবে জাভাস্ক্রিপ্ট মডিউলগুলির সাথে কাজ করতে পারেন:

একটি মডিউল থেকে রপ্তানি করা :
আপনি exportস্টেটমেন্ট ব্যবহার করে একটি মডিউল থেকে মান (ভেরিয়েবল, ফাংশন, ক্লাস, ইত্যাদি) রপ্তানি করতে পারেন।

// math.js
export function add(a, b) {
    return a + b;
}

export const PI = 3.14159;

অন্য মডিউলে আমদানি করা :
আপনি importস্টেটমেন্ট ব্যবহার করে একটি মডিউল থেকে রপ্তানিকৃত মান আমদানি করতে পারেন।

// app.js
import { add, PI } from './math.js';

console.log(add(5, 3)); // Outputs: 8
console.log(PI); // Outputs: 3.14159

ডিফল্ট রপ্তানি :
আপনি ডিফল্ট রপ্তানি হিসাবে একটি একক মান রপ্তানি করতে পারেন। এটি এমন মডিউলগুলির জন্য দরকারী যা প্রাথমিকভাবে একটি প্রধান কার্যকারিতা প্রদান করে।

// calculator.js
const calculator = {
    add(a, b) {
        return a + b;
    },
    subtract(a, b) {
        return a - b;
    }
};

export default calculator;

// app.js
import calculator from './calculator.js';

console.log(calculator.add(10, 5)); // Outputs: 15

নামযুক্ত আমদানি এবং ডিফল্ট আমদানি একসাথে :
আপনি একই বিবৃতিতে নামযুক্ত আমদানি এবং একটি ডিফল্ট আমদানি মিশ্রিত করতে পারেন import

import calculator, { add, subtract } from './calculator.js';

মডিউলগুলি কোড সংগঠিত করতে, নামকরণের দ্বন্দ্বের ঝুঁকি হ্রাস করতে, পুনঃব্যবহারযোগ্যতা প্রচার করতে এবং রক্ষণাবেক্ষণযোগ্যতা বাড়াতে সহায়তা করে। যাইহোক, এটা মনে রাখা গুরুত্বপূর্ণ যে সমস্ত পরিবেশ সরাসরি ES6 মডিউল সমর্থন করে না, বিশেষ করে পুরানো ব্রাউজারে। এটি মোকাবেলার জন্য, ওয়েবপ্যাকের মতো মডিউল বান্ডলার এবং বাবেলের মতো বিল্ড টুলগুলি প্রায়শই বিস্তৃত সামঞ্জস্যের জন্য মডিউলগুলিকে রূপান্তর এবং বান্ডিল করতে ব্যবহৃত হয়।

JS ES6

জাভাস্ক্রিপ্ট ES6

ES6 (ECMAScript 2015) জাভাস্ক্রিপ্ট প্রোগ্রামিং ভাষার একটি বড় আপডেটকে বোঝায় যা Ecma ইন্টারন্যাশনাল সংস্থা দ্বারা প্রমিত করা হয়েছিল। এটি ভাষাতে উল্লেখযোগ্য উন্নতি এবং নতুন বৈশিষ্ট্য প্রবর্তন করেছে, এর সক্ষমতা বৃদ্ধি করেছে এবং এটিকে আরও আধুনিক এবং বিকাশকারী-বান্ধব করে তুলেছে। ES6 জাভাস্ক্রিপ্টের সিনট্যাক্স, ক্ষমতা এবং কার্যকারিতায় অনেক উন্নতি এনেছে। এখানে ES6 এ প্রবর্তিত কিছু মূল বৈশিষ্ট্য রয়েছে:

  1. Let and Const কীওয়ার্ড : ES6 প্রথাগত টিকে প্রতিস্থাপন করে letএবং কীওয়ার্ড ব্যবহার করে ব্লক-স্কোপড ভেরিয়েবল প্রবর্তন করেছে constvar
  2. তীর ফাংশন : তীর ফাংশন ফাংশন লেখার জন্য একটি সংক্ষিপ্ত বাক্য গঠন প্রদান করে এবং তারা thisতাদের আশেপাশের কোড থেকে আভিধানিক শব্দ ধরে রাখে।
  3. টেমপ্লেট লিটারালস : টেমপ্লেট লিটারালগুলি আপনাকে ব্যাকটিক্স ( `) ব্যবহার করে স্ট্রিংগুলির মধ্যে এক্সপ্রেশন এবং ভেরিয়েবলগুলি এম্বেড করতে দেয়, স্ট্রিং সংযোজন এবং বিন্যাসকে সহজ করে তোলে।
  4. Destructuring : Destructuring আপনাকে আরও সংক্ষিপ্ত এবং পঠনযোগ্য উপায়ে আলাদা ভেরিয়েবলে অ্যারে বা বস্তু থেকে মান বের করতে সক্ষম করে।
  5. স্প্রেড এবং রেস্ট অপারেটর : স্প্রেড ( ...) অপারেটর আপনাকে একটি অ্যারেকে পৃথক উপাদানে বিভক্ত করতে বা একাধিক উপাদানকে একটি অ্যারেতে একত্রিত করতে দেয়।
  6. ক্লাস : ES6 ক্লাস তৈরি করতে এবং উত্তরাধিকার ব্যবহার করার জন্য একটি আরও মানসম্মত উপায় চালু করেছে, যা জাভাস্ক্রিপ্টে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংকে আরও স্বজ্ঞাত করে তুলেছে।
  7. মডিউল : ES6 মডিউলগুলির জন্য নেটিভ সমর্থন চালু করেছে, যা আপনাকে আপনার কোডকে আলাদা ফাইলগুলিতে আরও ভালভাবে সংগঠিত এবং এনক্যাপসুলেট করার অনুমতি দেয়৷
  8. প্রতিশ্রুতি : প্রতিশ্রুতিগুলি অ্যাসিঙ্ক্রোনাস কোডের সাথে কাজ করার একটি পরিষ্কার উপায় প্রদান করে, যা অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি পরিচালনা করা এবং কলব্যাক হেল এড়ানো সহজ করে তোলে।
  9. অ্যাসিঙ্ক/অপেক্ষা করুন : প্রতিশ্রুতির উপর ভিত্তি করে তৈরি করা, asyncএবংawait অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি পরিচালনা করার জন্য, কোড পঠনযোগ্যতা উন্নত করার জন্য আরও সিঙ্ক্রোনাস-সুদর্শন সিনট্যাক্স প্রদান করে।
  10. মানচিত্র এবং সেট : ES6 নতুন ডেটা স্ট্রাকচার প্রবর্তন করেছে: Mapএবং Set, যা ডেটা সংগ্রহ পরিচালনার জন্য অবজেক্ট এবং অ্যারেগুলির বিকল্প প্রদান করে।
  11. বর্ধিত অবজেক্ট লিটারালস : অবজেক্ট লিটারালগুলি সংক্ষিপ্ত পদ্ধতি সিনট্যাক্স, গণনাকৃত সম্পত্তির নাম এবং সংক্ষিপ্ত প্রপার্টি অ্যাসাইনমেন্ট সহ বর্ধিতকরণ পেয়েছে।
  12. ডিফল্ট পরামিতি : ES6 ফাংশন প্যারামিটারের জন্য ডিফল্ট মান নির্দিষ্ট করার ক্ষমতা চালু করেছে।
  13. চিহ্ন : Symbolঅনন্য এবং অপরিবর্তনীয় মান তৈরি করার জন্য ডেটা টাইপ প্রবর্তিত হয়েছিল, প্রায়শই বস্তুতে সম্পত্তি কী হিসাবে ব্যবহৃত হয়।

এগুলি ES6 দ্বারা প্রবর্তিত অনেকগুলি উন্নতি এবং বৈশিষ্ট্যগুলির মধ্যে মাত্র কয়েকটি৷ এটি জাভাস্ক্রিপ্টের আধুনিকীকরণে এবং এটিকে আরও অভিব্যক্তিপূর্ণ, দক্ষ এবং সহজে কাজ করার ক্ষেত্রে একটি গুরুত্বপূর্ণ ভূমিকা পালন করেছে। ECMAScript-এর পরবর্তী সংস্করণগুলি, যেমন ES7 (ES2016), ES8 (ES2017), এবং আরও অনেক কিছু, ভাষাতে নতুন বৈশিষ্ট্য এবং উন্নতির প্রবর্তন অব্যাহত রেখেছে।

জাভাস্ক্রিপ্ট তীর ফাংশন

জাভাস্ক্রিপ্টে একটি তীর ফাংশন একটি সুবিন্যস্ত সিনট্যাক্স ব্যবহার করে একটি ফাংশন সংজ্ঞায়িত করার একটি সংক্ষিপ্ত উপায়। এটি ECMAScript 6 (ES6) এ প্রবর্তন করা হয়েছিল এবং বিশেষ করে ছোট ফাংশন লেখার জন্য উপযোগী, বিশেষ করে যখন আপনাকে কীওয়ার্ডের আভিধানিক মান বজায় রাখতে হবে this। =>সিনট্যাক্সের কারণে তীর ফাংশনগুলিকে প্রায়ই “ফ্যাট অ্যারো” ফাংশন হিসাবে উল্লেখ করা হয় ।

এখানে একটি তীর ফাংশনের মৌলিক সিনট্যাক্স:

(parameter1, parameter2, ...) => expression

অথবা কোড ব্লক সহ ফাংশনগুলির জন্য:

(parameter1, parameter2, ...) => {
    // code block
}

তীর ফাংশন উদাহরণ :

  1. একক প্যারামিটার এবং অন্তর্নিহিত রিটার্ন:

const double = (x) => x * 2;
console.log(double(5)); // Outputs: 10
  1. একাধিক প্যারামিটার এবং কোড অব ব্লক:

const sum = (a, b) => {
    return a + b;
};
console.log(sum(3, 7)); // Outputs: 10
  1. কোন প্যারামিটার এবং অন্তর্নিহিত রিটার্ন নেই:

const greet = () => "Hello, world!";
console.log(greet()); // Outputs: Hello, world!

আভিধানিক thisবাইন্ডিং :
তীর ফাংশনগুলি তাদের আবদ্ধ প্রসঙ্গ থেকে এর মান ক্যাপচার করে , যার অর্থ তারা পার্শ্ববর্তী কোড থেকে thisএর মান উত্তরাধিকার সূত্রে পায় ।this

function Person() {
    this.age = 0;
    setInterval(() => {
        this.age++; // `this` refers to the Person instance
        console.log(this.age);
    }, 1000);
}
const person = new Person();

উপরের উদাহরণে, তীর ফাংশনটি প্রসঙ্গ থেকে মান setIntervalব্যবহার করে , নিশ্চিত করে যে বস্তুটিকে নির্দেশ করে thisPersonthisperson

অ্যারো ফাংশন কখন ব্যবহার করবেন :
অ্যারো ফাংশনগুলি ছোট, সাধারণ ফাংশনগুলির জন্য একটি দুর্দান্ত পছন্দ যা তাদের নিজস্ব বাইন্ডিংয়ের প্রয়োজন হয় না this। যাইহোক, তারা প্রতিটি পরিস্থিতির জন্য উপযুক্ত নাও হতে পারে। এগুলিকে কনস্ট্রাক্টর হিসাবে ব্যবহার করা যায় না ( newকীওয়ার্ড সহ), এবং তাদের argumentsঅবজেক্টের অভাব রয়েছে। এই ক্ষেত্রে, নিয়মিত ফাংশন এক্সপ্রেশন এখনও উপযুক্ত পছন্দ।

তীর ফাংশনগুলি জাভাস্ক্রিপ্টের একটি শক্তিশালী সংযোজন, যা কোডকে আরও সংক্ষিপ্ত করে এবং প্রায়শই কোড পাঠযোগ্যতা উন্নত করে।

জাভাস্ক্রিপ্ট ডিফল্ট পরামিতি

জাভাস্ক্রিপ্টে, ডিফল্ট প্যারামিটার আপনাকে ফাংশন প্যারামিটারের জন্য ডিফল্ট মান নির্ধারণ করতে দেয়। যদি কোনো ফাংশনকে প্যারামিটারের চেয়ে কম আর্গুমেন্ট সহ কল ​​করা হয়, তাহলে অনুপস্থিত প্যারামিটারগুলিকে তাদের ডিফল্ট মান নির্ধারণ করা হবে। এই বৈশিষ্ট্যটি ECMAScript 6 (ES6) এ চালু করা হয়েছে এবং ঐচ্ছিক পরামিতি সহ লেখার ফাংশনগুলিকে আরও সুবিধাজনক করে তোলে।

জাভাস্ক্রিপ্ট ফাংশনে আপনি কীভাবে ডিফল্ট প্যারামিটার ব্যবহার করতে পারেন তা এখানে:

function greet(name = "Guest") {
    console.log(`Hello, ${name}!`);
}

greet();         // Outputs: Hello, Guest!
greet("Alice");  // Outputs: Hello, Alice!

এই উদাহরণে, ফাংশনের একটি ডিফল্ট মান সহ greetএকটি প্যারামিটার রয়েছে । যদি ফাংশনটির জন্য একটি যুক্তি প্রদান না করে কল করা হয়name"Guest"name , ডিফল্ট মান ব্যবহার করা হবে। একটি যুক্তি প্রদান করা হলে, এটি ডিফল্ট মান ওভাররাইড করবে।

আপনি ডিফল্ট মান হিসাবে অভিব্যক্তি ব্যবহার করতে পারেন:

function power(base, exponent = 2) {
    return Math.pow(base, exponent);
}

console.log(power(3));     // Outputs: 9 (3 raised to the power of 2)
console.log(power(3, 3));  // Outputs: 27 (3 raised to the power of 3)

ডিফল্ট প্যারামিটার সম্পর্কে এই পয়েন্টগুলি মনে রাখবেন:

  • ডিফল্ট প্যারামিটার মানগুলি ফাংশনটি কল করার সময় মূল্যায়ন করা হয়, ঘোষণার সময় নয়। এটি এক্সপ্রেশন এবং গতিশীল ডিফল্টের জন্য অনুমতি দেয়।
  • আপনি যদি একটি যুক্তি হিসাবে স্পষ্টভাবে পাস করেন undefined, ডিফল্ট মান ব্যবহার করা হবে।
  • ডিফল্ট প্যারামিটারগুলি তীর ফাংশনেও ব্যবহার করা যেতে পারে।

ডিফল্ট পরামিতি হল একটি সহায়ক বৈশিষ্ট্য যা ঐচ্ছিক ফাংশন আর্গুমেন্ট পরিচালনাকে সহজ করে এবং ফাংশন সংজ্ঞায়িত করার ক্ষেত্রে আরও নমনীয়তা প্রদান করে।

জাভাস্ক্রিপ্ট টেমপ্লেট লিটারাল

ECMAScript 6 (ES6) তে প্রবর্তিত টেমপ্লেট লিটারালগুলি হল জাভাস্ক্রিপ্টের একটি বৈশিষ্ট্য যা আপনাকে আরও পাঠযোগ্য এবং নমনীয় উপায়ে এমবেডেড এক্সপ্রেশন সহ স্ট্রিং তৈরি করতে দেয়। `এগুলি একক বা দ্বিগুণ উদ্ধৃতির পরিবর্তে ব্যাকটিক্স ( ) এর মধ্যে আবদ্ধ । টেমপ্লেট লিটারেলগুলি স্ট্রিং ইন্টারপোলেশন এবং মাল্টিলাইন স্ট্রিংগুলির জন্য একটি সুবিধাজনক পদ্ধতি প্রদান করে।

জাভাস্ক্রিপ্টে আপনি কীভাবে টেমপ্লেট লিটারেল ব্যবহার করতে পারেন তা এখানে:

স্ট্রিং ইন্টারপোলেশন : আপনি সিনট্যাক্স
ব্যবহার করে সরাসরি টেমপ্লেট স্ট্রিং এর মধ্যে এক্সপ্রেশন এম্বেড করতে পারেন ।${expression}

const name = "Alice";
const greeting = `Hello, ${name}!`;
console.log(greeting); // Outputs: Hello, Alice!

মাল্টিলাইন স্ট্রিংস :
টেমপ্লেট লিটারেল নতুন লাইন এস্কেপ অক্ষর ব্যবহার করার প্রয়োজন ছাড়াই মাল্টিলাইন স্ট্রিং তৈরি করা সহজ করে তোলে।

const message = `
    This is a multiline
    string using template literals.
`;
console.log(message);

এক্সপ্রেশন এবং ফাংশন :
আপনি এর মধ্যে যেকোন বৈধ জাভাস্ক্রিপ্ট এক্সপ্রেশন অন্তর্ভুক্ত করতে পারেন ${}

const x = 5;
const y = 10;
const sum = `The sum of ${x} and ${y} is ${x + y}.`;
console.log(sum); // Outputs: The sum of 5 and 10 is 15.

ট্যাগ করা টেমপ্লেট লিটারালস :
টেমপ্লেট লিটারালগুলি একটি ট্যাগ ফাংশনের সাথেও ব্যবহার করা যেতে পারে, যা একটি ফাংশন যা টেমপ্লেট স্ট্রিংকে প্রিপ্রসেস করে।

function tag(strings, ...values) {
    return `${strings[0]}(${values[0]})`;
}

const name = "Alice";
const result = tag`Hello, ${name}!`;
console.log(result); // Outputs: Hello, Alice!

টেমপ্লেট লিটারালগুলি উন্নত পঠনযোগ্যতা এবং কোড সংগঠন অফার করে, যা সংযোজন বা নতুন লাইনের অক্ষরের প্রয়োজন ছাড়াই গতিশীল স্ট্রিং এবং মাল্টিলাইন পাঠ্য তৈরি করা সহজ করে তোলে।

জাভাস্ক্রিপ্ট স্প্রেড অপারেটর

স্প্রেড অপারেটর ( ...) হল ECMAScript 6 (ES6) এ প্রবর্তিত একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে একটি পুনরাবৃত্তিযোগ্য (যেমন একটি অ্যারে, স্ট্রিং বা অবজেক্ট) থেকে একাধিক উপাদান বা আর্গুমেন্ট প্রত্যাশিত স্থানে প্রসারিত করতে দেয়। এটি অ্যারের অগভীর কপি তৈরি, অ্যারে মার্জ করা এবং আরও অনেক কিছুর জন্য ব্যবহৃত হয়। স্প্রেড অপারেটর কোড সহজ করে এবং পঠনযোগ্যতা বাড়ায়।

এখানে জাভাস্ক্রিপ্টে স্প্রেড অপারেটরের কিছু সাধারণ ব্যবহারের ক্ষেত্রে রয়েছে:

1. অ্যারে কপি করা :
আপনি অ্যারের অগভীর কপি তৈরি করতে স্প্রেড অপারেটর ব্যবহার করতে পারেন।

const originalArray = [1, 2, 3];
const copyArray = [...originalArray];

2. সমন্বিত অ্যারে :
স্প্রেড অপারেটর একাধিক অ্যারে থেকে উপাদানগুলিকে একত্রিত করতে পারে।

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const combinedArray = [...array1, ...array2];

3. ফাংশনে আর্গুমেন্ট পাস করা :
আপনি স্প্রেড অপারেটর ব্যবহার করতে পারেন একটি অ্যারের উপাদানগুলিকে একটি ফাংশনে আলাদা আর্গুমেন্ট হিসাবে পাস করতে।

function add(a, b, c) {
    return a + b + c;
}

const numbers = [1, 2, 3];
const result = add(...numbers); // Equivalent to add(1, 2, 3)

4. অবজেক্টের ক্লোন তৈরি করা :
স্প্রেড অপারেটরটি বস্তুর ক্লোন করতেও ব্যবহার করা যেতে পারে (অগভীর অনুলিপি)।

const originalObject = { key1: "value1", key2: "value2" };
const copyObject = { ...originalObject };

5. মার্জিং অবজেক্ট :
আপনি স্প্রেড অপারেটর ব্যবহার করে একাধিক অবজেক্ট থেকে বৈশিষ্ট্য একত্রিত করতে পারেন।

const object1 = { a: 1, b: 2 };
const object2 = { b: 3, c: 4 };
const mergedObject = { ...object1, ...object2 };

6. স্ট্রিংগুলিকে অ্যারেতে রূপান্তর করা :
আপনি স্প্রেড অপারেটর ব্যবহার করে একটি স্ট্রিংকে একটি অ্যারেতে বিভক্ত করতে পারেন।

const string = "hello";
const charArray = [...string];

স্প্রেড অপারেটর হল একটি বহুমুখী টুল যা জাভাস্ক্রিপ্টের বিভিন্ন ক্রিয়াকলাপকে সহজ করে একটি উপাদান বা বৈশিষ্ট্যকে একটি থেকে আরেকটিতে প্রসারিত করে। এটি অ্যারে এবং অবজেক্টের সাথে কাজ করার পাশাপাশি ভাষার সিনট্যাক্স এবং কার্যকারিতা বাড়াতে ব্যাপকভাবে ব্যবহৃত হয়।

জাভাস্ক্রিপ্ট মানচিত্র

জাভাস্ক্রিপ্টে, a Mapহল ECMAScript 6 (ES6) এ প্রবর্তিত একটি ডেটা স্ট্রাকচার যা আপনাকে কী-মানের জোড়া সঞ্চয় করতে দেয় যেখানে কীগুলি যেকোন ডেটা টাইপের হতে পারে, শুধু স্ট্রিং বা চিহ্ন নয়। Mapউপাদানগুলির একটি অর্ডারকৃত সংগ্রহ প্রদান করে এবং ঐতিহ্যগত তুলনায় আরো নমনীয়Object উপাদানগুলির একটি অর্ডারকৃত সংগ্রহ প্রদান করে এবং বিভিন্ন ব্যবহারের ক্ষেত্রে

Mapজাভাস্ক্রিপ্টে আপনি কীভাবে কাজ করতে পারেন তা এখানে :

একটি মানচিত্র তৈরি করা :
আপনি কনস্ট্রাক্টর Mapব্যবহার করে একটি নতুন তৈরি করতে পারেন Map

const myMap = new Map();

মান নির্ধারণ এবং পাওয়া : আপনি পদ্ধতি ব্যবহার করে
একটি মূল-মান জোড়া যোগ করতে পারেন এবং পদ্ধতিটি ব্যবহার করে মান পুনরুদ্ধার করতে পারেন।Mapset()get()

myMap.set("name", "Alice");
myMap.set("age", 30);

console.log(myMap.get("name")); // Outputs: Alice
console.log(myMap.get("age"));  // Outputs: 30

একটি মানচিত্রের উপর পুনরাবৃত্তি :
আপনি for...ofএকটি এর এন্ট্রি (কী-মান জোড়া) পুনরাবৃত্তি করতে লুপ ব্যবহার করতে পারেন Map

for (const [key, value] of myMap) {
    console.log(`${key}: ${value}`);
}

আকার এবং মুছে ফেলা : আপনি সম্পত্তি ব্যবহার করে
একটি আকার পেতে এবং পদ্ধতি ব্যবহার করে এন্ট্রি মুছে ফেলতে পারেন।Mapsizedelete()

console.log(myMap.size); // Outputs: 2

myMap.delete("age");
console.log(myMap.size); // Outputs: 1

মানচিত্র বনাম বস্তু :

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

কেস ব্যবহার করুন :
Mapবিশেষত দরকারী যখন:

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

Mapএকটি বহুমুখী ডেটা স্ট্রাকচার যা প্লেইন অবজেক্টের তুলনায় কী-মানের জোড়া পরিচালনা করার জন্য আরও নমনীয় এবং সংগঠিত উপায় প্রদান করে।

জাভাস্ক্রিপ্ট সেট

জাভাস্ক্রিপ্টে, একটি Setহল একটি অন্তর্নির্মিত ডেটা স্ট্রাকচার যা ECMAScript 6 (ES6) এ চালু করা হয়েছে যা আপনাকে অনন্য মানগুলির একটি সংগ্রহ সংরক্ষণ করতে দেয়। Set কোনো ডুপ্লিকেট ছাড়াই মান ধরে রাখার জন্য ডিজাইন করা হয়েছে, এটি স্বতন্ত্রতা নিশ্চিত করার সময় আইটেমগুলির তালিকা বজায় রাখার জন্য দরকারী করে তোলে।

এখানে আপনি কিভাবে একটি সঙ্গে কাজ করতে পারেনSetজাভাস্ক্রিপ্টে

একটি সেট তৈরি করা :
আপনি কনস্ট্রাক্টর Setব্যবহার করে একটি নতুন তৈরি করতে পারেন Set

const mySet = new Set();

মান যোগ করা এবং পরীক্ষা করা :
আপনি পদ্ধতি Setব্যবহার করে একটি মান যোগ করতে পারেন, এবং আপনি পদ্ধতিটি add()ব্যবহার করে একটি মানের অস্তিত্ব পরীক্ষা করতে পারেন ।has()

mySet.add(1);
mySet.add("hello");
mySet.add(true);

console.log(mySet.has("hello")); // Outputs: true
console.log(mySet.has(2));       // Outputs: false

একটি সেটের উপর পুনরাবৃত্তি :
আপনি for...ofএকটি মানের উপর পুনরাবৃত্তি করতে লুপ ব্যবহার করতে পারেন Set

for (const value of mySet) {
    console.log(value);
}

আকার এবং মুছে ফেলা : আপনি সম্পত্তি ব্যবহার করে
একটি আকার পেতে এবং ব্যবহার করে মান মুছে ফেলতে পারেনSetsizedelete() এবং পদ্ধতি

console.log(mySet.size); // Outputs: 3

mySet.delete("hello");
console.log(mySet.size); // Outputs: 2

কেস ব্যবহার করুন :
Setবিশেষত দরকারী যখন:

  • আপনাকে মানগুলির একটি সংগ্রহ সঞ্চয় করতে হবে যেখানে ডুপ্লিকেট অনুমোদিত নয়৷
  • আপনি সদৃশ জন্য ম্যানুয়ালি পরীক্ষা না করেই স্বতন্ত্রতা নিশ্চিত করতে চান।
  • আপনি ইউনিয়ন, ছেদ, এবং সংগ্রহের পার্থক্যের মত সেট অপারেশন করতে চান।

এটা লক্ষ করা গুরুত্বপূর্ণ যে কSet তাদের রেফারেন্সের পরিবর্তে তাদের মানের উপর ভিত্তি করে মান সংরক্ষণ করে, যার অর্থ একই বিষয়বস্তু সহ দুটি বস্তুকে একটি এর মধ্যে সমান হিসাবে বিবেচনা করা হয়Set ।

Setঅনন্য মান সংগ্রহের সাথে কাজ করার জন্য একটি সহজ ডেটা কাঠামো, যা স্বতন্ত্র উপাদানগুলি বজায় রেখে ডেটা পরিচালনা করা সহজ করে তোলে।

জাভাস্ক্রিপ্ট ডিস্ট্রাকচারিং অ্যাসাইনমেন্ট

ডিস্ট্রাকচারিং অ্যাসাইনমেন্ট হল ECMAScript 6 (ES6) এ প্রবর্তিত একটি বৈশিষ্ট্য যা আপনাকে অ্যারে বা অবজেক্ট থেকে মান বের করতে এবং আরও সংক্ষিপ্ত এবং পঠনযোগ্য উপায়ে ভেরিয়েবলগুলিতে বরাদ্দ করতে দেয়। এটি একটি শক্তিশালী কৌশল যা কোডকে সরল করে এবং বারবার সম্পত্তি বা সূচক অ্যাক্সেসের প্রয়োজনীয়তা হ্রাস করে।

অ্যারে ডিস্ট্রাকচারিং :
আপনি অ্যারে ডিস্ট্রাকচারিং ব্যবহার করে অ্যারে থেকে মান বের করতে পারেন।

const numbers = [1, 2, 3];

const [a, b, c] = numbers;
console.log(a); // Outputs: 1
console.log(b); // Outputs: 2
console.log(c); // Outputs: 3

এলিমেন্ট এড়িয়ে যাওয়া :
আপনি ডিস্ট্রাকচারিং প্যাটার্নে একটি খালি জায়গা রেখে এলিমেন্ট এড়িয়ে যেতে পারেন।

const [first, , third] = numbers;
console.log(first); // Outputs: 1
console.log(third); // Outputs: 3

রেস্ট প্যারামিটার :
বাকি প্যারামিটার ...আপনাকে একটি নতুন অ্যারেতে অবশিষ্ট উপাদান সংগ্রহ করতে দেয়।

const [first, ...rest] = numbers;
console.log(first); // Outputs: 1
console.log(rest);  // Outputs: [2, 3]

অবজেক্ট ডিস্ট্রাকচারিং :
আপনি অবজেক্ট ডিস্ট্রাকচারিং ব্যবহার করে একটি অবজেক্ট থেকে মান বের করতে পারেন।

const person = { firstName: "Alice", lastName: "Smith" };

const { firstName, lastName } = person;
console.log(firstName); // Outputs: Alice
console.log(lastName);  // Outputs: Smith

ভেরিয়েবলের নাম পরিবর্তন করা :
আপনি ধ্বংস করার সময় ভেরিয়েবলের নাম পরিবর্তন করতে পারেন।

const { firstName: fName, lastName: lName } = person;
console.log(fName); // Outputs: Alice
console.log(lName); // Outputs: Smith

ডিফল্ট মান :
মানটি হলে আপনি ডিফল্ট মান প্রদান করতে পারেন undefined

const { role = "Guest" } = person;
console.log(role); // Outputs: Guest

ডিস্ট্রাকচারিং অ্যাসাইনমেন্ট একটি শক্তিশালী কৌশল যা অ্যারে এবং অবজেক্টের সাথে কাজ করার সময় কোডকে সহজ করে তোলে, পুনরাবৃত্তিমূলক সিনট্যাক্স ছাড়াই মানগুলি অ্যাক্সেস এবং বরাদ্দ করা সহজ করে তোলে।

জাভাস্ক্রিপ্ট ক্লাস

জাভাস্ক্রিপ্টে, ক্লাসগুলি হল ECMAScript 6 (ES6) এ প্রবর্তিত একটি বৈশিষ্ট্য যা কনস্ট্রাক্টর ফাংশন তৈরি এবং অবজেক্ট ইনস্ট্যান্স পরিচালনার জন্য আরও কাঠামোগত এবং অবজেক্ট-ভিত্তিক পদ্ধতি প্রদান করে। ক্লাসগুলি আচরণের সংজ্ঞা এবং উত্তরাধিকারের জন্য একটি পরিষ্কার এবং আরও স্বজ্ঞাত সিনট্যাক্স অফার করে, বস্তু তৈরির প্রক্রিয়া এবং প্রোটোটাইপগুলির সাথে আরও ব্যবহারকারী-বান্ধব কাজ করে।

এখানে আপনি কিভাবে জাভাস্ক্রিপ্টে ক্লাস নিয়ে কাজ করতে পারেন:

একটি ক্লাস সংজ্ঞায়িত করা :
আপনি classকীওয়ার্ড ব্যবহার করে একটি ক্লাস সংজ্ঞায়িত করতে পারেন।

class Rectangle {
    constructor(width, height) {
        this.width = width;
        this.height = height;
    }

    calculateArea() {
        return this.width * this.height;
    }
}

উদাহরণ তৈরি করা :
আপনি কীওয়ার্ড ব্যবহার করে একটি ক্লাসের উদাহরণ তৈরি করতে পারেন new

const rectangle1 = new Rectangle(5, 10);
const rectangle2 = new Rectangle(3, 6);

console.log(rectangle1.calculateArea()); // Outputs: 50
console.log(rectangle2.calculateArea()); // Outputs: 18

উত্তরাধিকার :
শ্রেণীগুলি extendsকীওয়ার্ডের মাধ্যমে উত্তরাধিকার সমর্থন করে।

class Square extends Rectangle {
    constructor(side) {
        super(side, side); // Call the parent constructor
    }
}

const square = new Square(4);
console.log(square.calculateArea()); // Outputs: 16

স্ট্যাটিক পদ্ধতি :
স্ট্যাটিক পদ্ধতিগুলি ক্লাসের সাথেই সংযুক্ত থাকে, এর উদাহরণ নয়।

class MathUtils {
    static add(x, y) {
        return x + y;
    }
}

console.log(MathUtils.add(3, 5)); // Outputs: 8

গেটার এবং সেটার :
আপনি ক্লাসের বৈশিষ্ট্যগুলির জন্য গেটার এবং সেটারের পদ্ধতিগুলি সংজ্ঞায়িত করতে পারেন।

class Circle {
    constructor(radius) {
        this.radius = radius;
    }

    get diameter() {
        return this.radius * 2;
    }

    set diameter(value) {
        this.radius = value / 2;
    }
}

const circle = new Circle(5);
console.log(circle.diameter); // Outputs: 10
circle.diameter = 12;
console.log(circle.radius);   // Outputs: 6

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

জাভাস্ক্রিপ্ট উত্তরাধিকার

জাভাস্ক্রিপ্টে, উত্তরাধিকার একটি বস্তুকে (সাবক্লাস বা শিশু) অন্য বস্তু (সুপারক্লাস বা প্যারেন্ট) থেকে বৈশিষ্ট্য এবং পদ্ধতিগুলিকে উত্তরাধিকারী হতে দেয়। এটি কোড পুনঃব্যবহারের প্রচার করে এবং আপনাকে সাধারণ বৈশিষ্ট্যগুলি ভাগ করে এমন বস্তুগুলির একটি শ্রেণিবিন্যাস তৈরি করতে দেয়। উত্তরাধিকার প্রায়শই প্রোটোটাইপ বা classECMAScript 6 (ES6) এ প্রবর্তিত সিনট্যাক্স ব্যবহার করে অর্জন করা হয়।

আপনি কীভাবে জাভাস্ক্রিপ্টে উত্তরাধিকার অর্জন করতে পারেন তা এখানে:

1. প্রোটোটাইপ-ভিত্তিক উত্তরাধিকার :
প্রাক-ES6 যুগে, জাভাস্ক্রিপ্ট প্রোটোটাইপ-ভিত্তিক উত্তরাধিকার ব্যবহার করত। আপনি একটি প্যারেন্ট কনস্ট্রাক্টর ফাংশন তৈরি করতে পারেন এবং তারপরে প্যারেন্ট কনস্ট্রাক্টরের একটি উদাহরণের সাথে চাইল্ড কনস্ট্রাক্টরের প্রোটোটাইপ লিঙ্ক করতে পারেন। এইভাবে, শিশু বস্তুগুলি পিতামাতার প্রোটোটাইপ থেকে বৈশিষ্ট্য এবং পদ্ধতির উত্তরাধিকারী হয়।

function Animal(name) {
    this.name = name;
}

Animal.prototype.sayHello = function() {
    console.log(`Hello, I'm ${this.name}`);
};

function Dog(name, breed) {
    Animal.call(this, name);
    this.breed = breed;
}

Dog.prototype = Object.create(Animal.prototype);

const dog = new Dog("Buddy", "Labrador");
dog.sayHello(); // Outputs: Hello, I'm Buddy

2. ক্লাস-ভিত্তিক উত্তরাধিকার : ES6-এ
সিনট্যাক্স প্রবর্তনের সাথে class, উত্তরাধিকার আরও সহজবোধ্য। আপনি extendsএকটি সুপারক্লাস থেকে উত্তরাধিকারসূত্রে পাওয়া একটি সাবক্লাস তৈরি করতে কীওয়ার্ড ব্যবহার করতে পারেন।

class Animal {
    constructor(name) {
        this.name = name;
    }

    sayHello() {
        console.log(`Hello, I'm ${this.name}`);
    }
}

class Dog extends Animal {
    constructor(name, breed) {
        super(name);
        this.breed = breed;
    }
}

const dog = new Dog("Buddy", "Labrador");
dog.sayHello(); // Outputs: Hello, I'm Buddy

উভয় ক্ষেত্রেই, সাবক্লাস সুপারক্লাস থেকে বৈশিষ্ট্য এবং পদ্ধতিগুলি উত্তরাধিকারসূত্রে পায়। কীওয়ার্ডটি superসুপারক্লাস কনস্ট্রাক্টর বা মেথড কল করতে ব্যবহৃত হয়।

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

উত্তরাধিকার হ’ল অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের একটি মৌলিক ধারণা এবং সংগঠিত এবং কাঠামোগত কোডে সহায়তা করে। যাইহোক, আরও নমনীয় এবং রক্ষণাবেক্ষণযোগ্য কোড অর্জনের জন্য এটি অন্যান্য পদ্ধতির বিবেচনা করা মূল্যবান, যেমন কম্পোজিশন এবং উত্তরাধিকারের উপর কম্পোজিশনের পক্ষে।

লুপের…এর জন্য জাভাস্ক্রিপ্ট

দ্যfor...of হল একটি আধুনিক পুনরাবৃত্তি বিবৃতি যা ECMAScript 6 (ES6) এ প্রবর্তিত হয়েছে যা পুনরাবৃত্তিযোগ্য বস্তু যেমন অ্যারে, স্ট্রিং, মানচিত্র, সেট এবং আরও অনেক কিছুর উপাদানগুলির উপর পুনরাবৃত্তি করার একটি সহজ এবং আরও সংক্ষিপ্ত উপায় প্রদান করে। এটি সূচক বা ম্যানুয়াল পুনরাবৃত্তি নিয়ন্ত্রণের প্রয়োজন ছাড়াই সংগ্রহের মাধ্যমে লুপ করার প্রক্রিয়াটিকে সহজ করে।

for...ofআপনি কীভাবে জাভাস্ক্রিপ্টে লুপ ব্যবহার করতে পারেন তা এখানে :

অ্যারেগুলির উপর পুনরাবৃত্তি :

const numbers = [1, 2, 3, 4, 5];

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

স্ট্রিং এর উপর পুনরাবৃত্তি :

const message = "Hello, world!";

for (const char of message) {
    console.log(char);
}

মানচিত্রের উপর পুনরাবৃত্তি :

const myMap = new Map();
myMap.set("a", 1);
myMap.set("b", 2);

for (const [key, value] of myMap) {
    console.log(`${key}: ${value}`);
}

সেটের উপর পুনরাবৃত্তি :

const mySet = new Set();
mySet.add(1);
mySet.add(2);

for (const value of mySet) {
    console.log(value);
}

এর সুবিধাfor...of :

  • কোড ক্লিনার তৈরি করে সূচকগুলি পরিচালনা করার বা দৈর্ঘ্য গণনা করার দরকার নেই।
  • একটি পুনরাবৃত্তিযোগ্য মানগুলির উপর স্বয়ংক্রিয়ভাবে পুনরাবৃত্তি হয়।
  • যেকোন পুনরাবৃত্তিযোগ্য বস্তুর সাথে কাজ করে, শুধু অ্যারে নয়।

মনে রাখবেন যে for...ofলুপটি পুনরাবৃত্তিযোগ্য মানগুলির উপর পুনরাবৃত্তি করে, সূচকগুলিতে নয়। আপনার যদি সূচক এবং মান উভয়েরই প্রয়োজন হয়, আপনি for...inঅবজেক্টের জন্য লুপ বা entries()অ্যারে, মানচিত্র এবং সেটগুলির জন্য পদ্ধতি ব্যবহার করার কথা বিবেচনা করতে পারেন।

// Iterating over array indices and values using entries()
for (const [index, value] of numbers.entries()) {
    console.log(`Index: ${index}, Value: ${value}`);
}

লুপটি for...ofসংগ্রহের মাধ্যমে পুনরাবৃত্তি করার প্রক্রিয়াটিকে সহজ করে, আপনার কোডটিকে আরও পাঠযোগ্য এবং অভিব্যক্তিপূর্ণ করে তোলে।

জাভাস্ক্রিপ্ট প্রক্সি

জাভাস্ক্রিপ্টে, একটি Proxyহল একটি উন্নত বৈশিষ্ট্য যা ECMAScript 6 (ES6) এ প্রবর্তিত হয়েছে যা আপনাকে অবজেক্টে মৌলিক ক্রিয়াকলাপগুলিকে আটকাতে এবং কাস্টমাইজ করতে দেয়, যেমন সম্পত্তি অ্যাক্সেস, অ্যাসাইনমেন্ট, পদ্ধতি কল এবং আরও অনেক কিছু। প্রক্সিগুলি বস্তুর চারপাশে কাস্টম আচরণ তৈরি করার একটি উপায় প্রদান করে, যা আপনাকে বৈধতা, লগিং, ক্যাশিং এবং নিরাপত্তা চেকের মতো বৈশিষ্ট্যগুলি বাস্তবায়ন করতে সক্ষম করে।

Proxyআপনি কীভাবে জাভাস্ক্রিপ্টে বস্তুর সাথে কাজ করতে পারেন তার একটি ওভারভিউ এখানে রয়েছে :

একটি প্রক্সি তৈরি করা :
আপনি একটি লক্ষ্য বস্তু এবং একটি হ্যান্ডলার অবজেক্ট প্রদান করে কনস্ট্রাক্টর Proxyব্যবহার করে একটি বস্তু তৈরি করতে পারেন।Proxy

const target = { name: "Alice" };
const handler = {
    get(target, property) {
        console.log(`Getting property "${property}"`);
        return target[property];
    },
    set(target, property, value) {
        console.log(`Setting property "${property}" to "${value}"`);
        target[property] = value;
    }
};

const proxy = new Proxy(target, handler);

proxy.name; // Triggers the "get" trap and logs "Getting property "name""
proxy.age = 30; // Triggers the "set" trap and logs "Setting property "age" to "30""

হ্যান্ডলার ট্র্যাপস :
হ্যান্ডলার অবজেক্টে বিভিন্ন “ফাঁদ” থাকে যা প্রক্সিতে ক্রিয়াকলাপকে বাধা দেয় এমন পদ্ধতি। সাধারণ ফাঁদের মধ্যে রয়েছে getsetapplyconstruct, এবং আরও অনেক কিছু।

বৈধকরণের উদাহরণ :
আপনি বস্তুর বৈশিষ্ট্যগুলিতে বৈধতা প্রয়োগ করতে একটি প্রক্সি ব্যবহার করতে পারেন।

const validatedObject = new Proxy({}, {
    set(target, property, value) {
        if (property === "age" && typeof value !== "number") {
            throw new Error("Age must be a number");
        }
        target[property] = value;
        return true;
    }
});

validatedObject.age = 25; // Works fine
validatedObject.age = "twenty-five"; // Throws an error

নিরাপত্তা এবং বৈধতা :
প্রক্সিগুলি নির্দিষ্ট ক্রিয়াকলাপগুলি নির্দিষ্ট নিয়ম বা সীমাবদ্ধতা মেনে চলে তা নিশ্চিত করে বস্তুর উপর সূক্ষ্ম নিরাপত্তা চেক এবং বৈধতা কার্যকর করার একটি উপায় প্রদান করে।

এটি লক্ষ্য করা গুরুত্বপূর্ণ যে Proxyবস্তুগুলি শক্তিশালী কাস্টমাইজেশন ক্ষমতা প্রদান করে, তারা কার্যক্ষমতা ওভারহেডের সাথে আসে। যেহেতু প্রক্সির প্রতিটি ক্রিয়াকলাপ সংশ্লিষ্ট ফাঁদ দ্বারা আটকানো এবং পরিচালনা করা হয়, তাই কর্মক্ষমতার প্রভাব থাকতে পারে, বিশেষ করে কর্মক্ষমতা-সমালোচনামূলক পরিস্থিতিতে।

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

জেএস অ্যাসিঙ্ক্রোনাস

জাভাস্ক্রিপ্ট অ্যাসিঙ্ক্রোনাস

অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং হল জাভাস্ক্রিপ্টের একটি মূল ধারণা যা আপনাকে অন্য কোডের এক্সিকিউশন ব্লক না করে কাজ সম্পাদন করতে দেয়। নেটওয়ার্ক অনুরোধ, ফাইল I/O, এবং টাইমারের মতো আপনার অ্যাপ্লিকেশনের মূল থ্রেডটি হিমায়িত না করেই ক্রিয়াকলাপগুলি পরিচালনা করার জন্য এটি প্রয়োজনীয় যা সম্পূর্ণ হতে সময় নিতে পারে।

জাভাস্ক্রিপ্ট বিভিন্ন প্রক্রিয়ার মাধ্যমে অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং অর্জন করে:

1. কলব্যাক :
কলব্যাক হল অন্য ফাংশনে আর্গুমেন্ট হিসাবে পাস করা ফাংশন। একটি নির্দিষ্ট অপারেশন শেষ হওয়ার পরে তাদের মৃত্যুদন্ড কার্যকর করা হয়। জাভাস্ক্রিপ্টের পুরানো সংস্করণগুলিতে অ্যাসিঙ্ক্রোনাস কাজগুলি পরিচালনা করার জন্য কলব্যাকগুলি একটি মৌলিক উপায়৷

function fetchData(callback) {
    setTimeout(() => {
        const data = "Fetched data";
        callback(data);
    }, 1000);
}

fetchData((result) => {
    console.log(result);
});

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

function fetchData() {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const data = "Fetched data";
            resolve(data);
        }, 1000);
    });
}

fetchData()
    .then((result) => {
        console.log(result);
    })
    .catch((error) => {
        console.error(error);
    });

3. অ্যাসিঙ্ক/অপেক্ষা করুন :
ECMAScript 2017 (ES8) এ প্রবর্তন করা হয়েছে, asyncএবং awaitঅ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি পরিচালনা করার জন্য আরও সিঙ্ক্রোনাস-সুদর্শন সিনট্যাক্স প্রদান করে৷ একটি asyncফাংশন সর্বদা একটি প্রতিশ্রুতি প্রদান করে, এবং awaitপ্রতিশ্রুতি সমাধান না হওয়া পর্যন্ত আপনি কার্যকরী বিরাম দিতে এর ভিতরে কীওয়ার্ড ব্যবহার করতে পারেন।

async function fetchData() {
    return new Promise((resolve) => {
        setTimeout(() => {
            const data = "Fetched data";
            resolve(data);
        }, 1000);
    });
}

async function processData() {
    const result = await fetchData();
    console.log(result);
}

processData();

প্রতিক্রিয়াশীল এবং দক্ষ অ্যাপ্লিকেশন তৈরির জন্য অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যখন সময়-সাপেক্ষ ক্রিয়াকলাপ বা বাহ্যিক সংস্থানগুলির সাথে মিথস্ক্রিয়াগুলির সাথে কাজ করা হয়। যদিও এটি প্রাথমিকভাবে উপলব্ধি করা কিছুটা চ্যালেঞ্জিং হতে পারে, কীভাবে কলব্যাক, প্রতিশ্রুতি এবং অ্যাসিঙ্ক/অপেক্ষার কাজগুলি কার্যকর জাভাস্ক্রিপ্ট কোড লেখার আপনার ক্ষমতাকে ব্যাপকভাবে বাড়িয়ে তুলবে তা বোঝা।

জাভাস্ক্রিপ্ট সেটটাইমআউট()

জাভাস্ক্রিপ্টে, setTimeout()ফাংশনটি একটি অন্তর্নির্মিত পদ্ধতি যা আপনাকে একটি নির্দিষ্ট বিলম্বের পরে একটি ফাংশন (বা একটি কোড ব্লক) কার্যকর করার সময় নির্ধারণ করতে দেয়। এটি সাধারণত প্রধান থ্রেড ব্লক না করে সময়-ভিত্তিক ইভেন্ট, অ্যানিমেশন এবং অ্যাসিঙ্ক্রোনাস অপারেশন তৈরি করতে ব্যবহৃত হয়।

আপনি কীভাবে ফাংশনটি ব্যবহার করতে পারেন তা এখানে setTimeout():

setTimeout(function() {
    console.log("Delayed message");
}, 1000); // Delayed execution after 1000 milliseconds (1 second)

আপনি আরও সংক্ষিপ্ত সিনট্যাক্সের জন্য তীর ফাংশন ব্যবহার করতে পারেন:

setTimeout(() => {
    console.log("Delayed message");
}, 1000);

ফাংশন setTimeout()দুটি আর্গুমেন্ট নেয়:

  1. আপনি যে ফাংশনটি বিলম্বের পরে চালাতে চান।
  2. ফাংশন সম্পাদনের আগে মিলিসেকেন্ডে বিলম্ব।

এটি লক্ষ্য করা গুরুত্বপূর্ণ যে ব্রাউজার পারফরম্যান্স এবং ইভেন্ট লুপের মতো কারণগুলির কারণে প্রকৃত সম্পাদনের সময় নির্দিষ্ট বিলম্বের মতো ঠিক একই নাও হতে পারে।

এটি হওয়ার আগে আপনার যদি একটি নির্ধারিত এক্সিকিউশন বাতিল করতে হয়, আপনি ফাংশনের সাথে ফিরে আসা টাইমআউট আইডি ব্যবহার করতে পারেন clearTimeout():

const timeoutId = setTimeout(() => {
    console.log("This will be canceled");
}, 2000);

clearTimeout(timeoutId); // Cancels the scheduled execution

setTimeout()অ্যাসিঙ্ক্রোনাস টাইমিং পরিচালনার জন্য জাভাস্ক্রিপ্টের একটি মৌলিক পদ্ধতি, এটি সময়-ভিত্তিক মিথস্ক্রিয়া তৈরি করা এবং নির্দিষ্ট ব্যবধানে কাজ সম্পাদন করা সম্ভব করে।

জাভাস্ক্রিপ্ট কলব্যাক

জাভাস্ক্রিপ্টে একটি কলব্যাক হল একটি ফাংশন যা অন্য ফাংশনে একটি আর্গুমেন্ট হিসাবে পাস করা হয় এবং একটি নির্দিষ্ট কাজ বা ইভেন্ট সম্পূর্ণ হওয়ার পরে কার্যকর করার উদ্দেশ্যে করা হয়। কলব্যাকগুলি অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংয়ের একটি মৌলিক দিক এবং নেটওয়ার্ক অনুরোধ, ফাইল অপারেশন এবং টাইমারগুলির মতো কাজগুলি সম্পূর্ণ হতে সময় নিতে পারে এমন কাজগুলি পরিচালনা করার ক্ষেত্রে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে৷

জাভাস্ক্রিপ্টে কলব্যাকগুলি কীভাবে কাজ করে তা এখানে:

এর সাথে উদাহরণsetTimeout() :

function delayedMessage(callback) {
    setTimeout(function() {
        console.log("Delayed message");
        callback(); // Invoke the callback after the delay
    }, 1000);
}

function afterDelay() {
    console.log("Callback executed after delay");
}

delayedMessage(afterDelay);

এই উদাহরণে, afterDelayএকটি কলব্যাক ফাংশন যা ফাংশনে পাস করা হয় delayedMessage। বিলম্বের পরে কলব্যাক কার্যকর করা হয় setTimeout()

তীর ফাংশন ব্যবহার করা :
আপনি কলব্যাক ফাংশন সংজ্ঞায়িত করতে তীর ফাংশন ব্যবহার করতে পারেন।

delayedMessage(() => {
    console.log("Callback executed after delay");
});

সাধারণ ব্যবহারের ক্ষেত্রে :

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

কলব্যাক হেল (কলব্যাক পিরামিড) :
একাধিক নেস্টেড কলব্যাক নিয়ে কাজ করার সময়, কোড পঠনযোগ্যতা ক্ষতিগ্রস্ত হতে পারে, যা “কলব্যাক হেল” বা “কলব্যাক পিরামিড” নামে পরিচিত একটি ঘটনার দিকে পরিচালিত করে। এটি কোডটিকে বোঝা এবং বজায় রাখা কঠিন করে তুলতে পারে।

fetchData(function(result) {
    processData(result, function(processedData) {
        displayData(processedData, function(displayedData) {
            // More nested callbacks...
        });
    });
});

কলব্যাক হেল প্রশমিত করতে, অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি পরিচালনা করার আরও কাঠামোগত উপায় সরবরাহ করার জন্য প্রতিশ্রুতি এবং অ্যাসিঙ্ক/অপেক্ষার মতো নতুন কৌশলগুলি চালু করা হয়েছিল।

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

জাভাস্ক্রিপ্ট প্রতিশ্রুতি

প্রতিশ্রুতিগুলি হল একটি শক্তিশালী বৈশিষ্ট্য যা ECMAScript 6 (ES6) এ চালু করা হয়েছে যা জাভাস্ক্রিপ্টে অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলি পরিচালনা করার জন্য একটি কাঠামোগত এবং আরও পাঠযোগ্য উপায় প্রদান করে। প্রতিশ্রুতিগুলি এমন একটি মান উপস্থাপন করতে ব্যবহৃত হয় যা এখন, ভবিষ্যতে, বা কখনই উপলব্ধ হতে পারে। তারা কলব্যাক পরিচালনাকে সহজ করে, কোডটিকে আরও রক্ষণাবেক্ষণযোগ্য এবং যুক্তি করা সহজ করে তোলে।

আপনি কীভাবে জাভাস্ক্রিপ্টে প্রতিশ্রুতি দিয়ে কাজ করতে পারেন তা এখানে:

একটি প্রতিশ্রুতি তৈরি করা : কন্সট্রাক্টর
ব্যবহার করে একটি প্রতিশ্রুতি তৈরি করা হয় Promise, যা একটি একক যুক্তি নেয় – দুটি প্যারামিটার সহ একটি ফাংশন: resolveএবং reject.

const fetchData = new Promise((resolve, reject) => {
    setTimeout(() => {
        const data = "Fetched data";
        resolve(data); // Successful completion
        // reject(new Error("Failed to fetch data")); // Error condition
    }, 1000);
});

ব্যবহার .then()এবং.catch() :
আপনি .then()একটি প্রতিশ্রুতির সফল রেজোলিউশন পরিচালনা করতে এবং .catch()ত্রুটিগুলি পরিচালনা করার পদ্ধতিটি ব্যবহার করতে পারেন।

fetchData.then((result) => {
    console.log(result);
}).catch((error) => {
    console.error(error);
});

চেইনিং প্রমিজ : অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপগুলির একটি ক্রম সঞ্চালনের জন্য
প্রতিশ্রুতিগুলিকে চেইন করা যেতে পারে ।.then()

fetchData.then((result) => {
    console.log(result);
    return processData(result);
}).then((processedData) => {
    console.log(processedData);
}).catch((error) => {
    console.error(error);
});

ব্যবহারPromise.all() :
পদ্ধতিটি Promise.all()প্রতিশ্রুতিগুলির একটি অ্যারে নেয় এবং একটি নতুন প্রতিশ্রুতি প্রদান করে যা সমস্ত প্রদত্ত প্রতিশ্রুতি সমাধান হয়ে গেলে সমাধান করা হয়।

const promise1 = fetchData();
const promise2 = fetchData();
const promise3 = fetchData();

Promise.all([promise1, promise2, promise3])
    .then((results) => {
        console.log(results); // Array of results from all promises
    })
    .catch((error) => {
        console.error(error);
    });

async/awaitপ্রতিশ্রুতির সাথে ব্যবহার করা : এবং
কীওয়ার্ডগুলি প্রতিশ্রুতিগুলির সাথে কাজ করার জন্য আরও সিঙ্ক্রোনাস-সুদর্শন সিনট্যাক্স প্রদান করে।asyncawait

async function fetchDataAsync() {
    try {
        const result = await fetchData();
        console.log(result);
    } catch (error) {
        console.error(error);
    }
}

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

জাভাস্ক্রিপ্ট অ্যাসিঙ্ক/অপেক্ষা করুন

async/awaitECMAScript 2017 (ES8) এ প্রবর্তিত একটি বৈশিষ্ট্য যা প্রতিশ্রুতি ব্যবহার করে অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপ পরিচালনা করার জন্য আরও পাঠযোগ্য এবং সিঙ্ক্রোনাস-এর মতো সিনট্যাক্স প্রদান করে। এটি আপনাকে এমনভাবে অ্যাসিঙ্ক্রোনাস কোড লিখতে দেয় যা দেখতে এবং আচরণ করে ঐতিহ্যগত সিঙ্ক্রোনাস কোডের মতো, এটি বোঝা এবং বজায় রাখা সহজ করে।

এখানে আপনি কিভাবে async/awaitজাভাস্ক্রিপ্ট ব্যবহার করতে পারেন:

একটি Async ফাংশন সংজ্ঞায়িত করা :
একটি asyncফাংশন হল একটি ফাংশন যা asyncকীওয়ার্ড ব্যবহার করে ঘোষণা করা হয়। একটি ফাংশনের ভিতরে async, আপনি awaitএকটি প্রতিশ্রুতি সমাধান না হওয়া পর্যন্ত ফাংশনটির সম্পাদনকে বিরতি দিতে কীওয়ার্ড ব্যবহার করতে পারেন।

async function fetchData() {
    const result = await somePromiseFunction();
    return result;
}

ব্যবহারawait :
আপনি একটি প্রতিশ্রুতি সমাধান না হওয়া পর্যন্ত এক্সিকিউশন পজ করতে awaitএকটি ফাংশনের ভিতরে কীওয়ার্ড ব্যবহার করতে পারেন। asyncমীমাংসিত প্রতিশ্রুতির ফলাফল ফিরে আসে।

async function example() {
    const result = await fetchData();
    console.log(result);
}

ত্রুটি হ্যান্ডলিং : আপনি ব্যবহার করার সময় ত্রুটিগুলি পরিচালনা করতে
ঐতিহ্যগত ব্লক ব্যবহার করতে পারেন try/catchawait

async function fetchData() {
    try {
        const result = await somePromiseFunction();
        return result;
    } catch (error) {
        console.error(error);
    }
}

চেইনিং অ্যাসিঙ্ক ফাংশন :
আপনি asyncব্যবহার করে ফাংশন চেইন করতে পারেন await

async function fetchData() {
    const result = await somePromiseFunction();
    return result;
}

async function processResult() {
    const data = await fetchData();
    const processedData = await processFunction(data);
    console.log(processedData);
}

সমান্তরাল এক্সিকিউশন ব্যবহার করেPromise.all() :
আপনি সমান্তরালে একাধিক অ্যাসিঙ্ক্রোনাস অপারেশন চালানোর জন্য Promise.all()ব্যবহার করতে পারেন।await

async function fetchAndProcessData() {
    const promise1 = fetchData();
    const promise2 = processFunction();

    const [result1, result2] = await Promise.all([promise1, promise2]);

    console.log(result1, result2);
}

async/awaitজাভাস্ক্রিপ্টে প্রতিশ্রুতি এবং অ্যাসিঙ্ক্রোনাস অপারেশনগুলির সাথে কাজ করার জন্য আরও মার্জিত এবং কাঠামোগত উপায় প্রদান করে, কোড পঠনযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতা উন্নত করে। যাইহোক, এটি লক্ষ্য করা গুরুত্বপূর্ণ যে async/awaitশুধুমাত্র ফাংশনের মধ্যে ব্যবহার করা যেতে পারে async, এবং এটি প্রতিশ্রুতি এবং অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং ধারণা বোঝার প্রয়োজনীয়তা দূর করে না।

জাভাস্ক্রিপ্ট সেট ইন্টারভাল()

জাভাস্ক্রিপ্টে, setInterval()ফাংশনটি একটি অন্তর্নির্মিত পদ্ধতি যা আপনাকে নির্দিষ্ট ব্যবধানে একটি ফাংশন বারবার চালানোর অনুমতি দেয়। এটি সাধারণত পুনরাবৃত্তিমূলক কাজ, অ্যানিমেশন এবং ওয়েব অ্যাপ্লিকেশনগুলিতে নিয়মিত আপডেট তৈরি করতে ব্যবহৃত হয়।

আপনি কীভাবে ফাংশনটি ব্যবহার করতে পারেন তা এখানে setInterval():

function repeatTask() {
    console.log("Task executed every 2 seconds");
}

const intervalId = setInterval(repeatTask, 2000); // Execute repeatTask every 2000 milliseconds (2 seconds)

ফাংশন setInterval()দুটি আর্গুমেন্ট নেয়:

  1. যে ফাংশনটি আপনি বারবার এক্সিকিউট করতে চান।
  2. প্রতিটি এক্সিকিউশনের মধ্যে মিলিসেকেন্ডে সময়ের ব্যবধান।

প্রদত্ত ফাংশনটি setInterval()নির্দিষ্ট ব্যবধানে বারবার কল করা হবে যতক্ষণ না আপনি ব্যবধান ID ব্যবহার করে এটি বন্ধ না করেন setInterval()

একটি ব্যবধান সাফ করা :
আপনি ফাংশনের সাথে ইন্টারভাল আইডি ব্যবহার করে পুনরাবৃত্তি বন্ধ করতে পারেন clearInterval():

clearInterval(intervalId); // Stops the repetitive execution

এটি লক্ষ্য করা গুরুত্বপূর্ণ যে setInterval()এটি পরিষ্কার না করে ব্যবহার করলে সঠিকভাবে পরিচালিত না হলে সম্ভাব্য মেমরি লিক এবং কর্মক্ষমতা সমস্যা হতে পারে। clearInterval()অপ্রয়োজনীয় মৃত্যুদণ্ড রোধ করতে আপনার আর বিরতির প্রয়োজন না হলে ব্যবহার করা নিশ্চিত করুন ।

উদাহরণ: অ্যানিমেশন ব্যবহার করেsetInterval() :

let position = 0;

function animate() {
    const element = document.getElementById("animated-element");
    position += 10;
    element.style.left = position + "px";

    if (position >= 200) {
        clearInterval(animationInterval);
    }
}

const animationInterval = setInterval(animate, 100); // Move the element every 100 milliseconds

এই উদাহরণে, animateফাংশনটিকে বারবার বলা হয়, একটি উপাদানকে ডানদিকে সরানো যতক্ষণ না এটি একটি নির্দিষ্ট অবস্থানে পৌঁছায়। অবস্থানে পৌঁছে গেলে, ব্যবধান সাফ করা হয়।

setInterval()জাভাস্ক্রিপ্টে পুনরাবৃত্তিমূলক কাজ এবং অ্যানিমেশন তৈরি করার জন্য একটি দরকারী টুল। যাইহোক, অবাঞ্ছিত আচরণ প্রতিরোধ করতে এবং কর্মক্ষমতা অপ্টিমাইজ করার জন্য বিরতিগুলি সাবধানে পরিচালনা করা গুরুত্বপূর্ণ।

জাভাস্ক্রিপ্ট বিবিধ

অবশ্যই! এখানে জাভাস্ক্রিপ্ট সম্পর্কিত কিছু বিবিধ বিষয় এবং ধারণা রয়েছে:

1. স্প্রেড অপারেটর ( ...) :
স্প্রেড অপারেটর আপনাকে একটি অ্যারে বা অবজেক্ট থেকে অন্য অ্যারেতে “প্রসারিত” করার অনুমতি দেয়। এটি অ্যারে অনুলিপি করা, অ্যারে মার্জ করা এবং অবজেক্টের ক্লোন তৈরি করার জন্য দরকারী।

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];

const mergedArray = [...array1, ...array2]; // [1, 2, 3, 4, 5, 6]

2. বিশ্রামের পরামিতি :
বিশ্রামের পরামিতিগুলি আপনাকে একটি একক অ্যারে প্যারামিটারে একাধিক আর্গুমেন্ট ক্যাপচার করতে দেয়। আপনি যখন ফাংশনে পরিবর্তনশীল-দৈর্ঘ্যের যুক্তি তালিকার সাথে কাজ করতে চান তখন এগুলি দরকারী।

function sum(...numbers) {
    return numbers.reduce((total, num) => total + num, 0);
}

console.log(sum(1, 2, 3)); // Outputs: 6

3. অবজেক্ট ডিস্ট্রাকচারিং :
ডিস্ট্রাকচারিং বস্তুর সাথে আলাদা আলাদা ভেরিয়েবলের বৈশিষ্ট্য বের করতে ব্যবহার করা যেতে পারে।

const person = { firstName: "Alice", lastName: "Smith" };
const { firstName, lastName } = person;

console.log(firstName); // Outputs: Alice

4. টেমপ্লেট লিটারালস :
টেমপ্লেট লিটারাল আপনাকে ব্যাকটিক্স ব্যবহার করে স্ট্রিংয়ের ভিতরে এক্সপ্রেশন এম্বেড করতে দেয়।

const name = "Alice";
const greeting = `Hello, ${name}!`;

console.log(greeting); // Outputs: Hello, Alice!

5. Fetch API :
Fetch API হল জাভাস্ক্রিপ্টে নেটওয়ার্ক অনুরোধ (HTTP অনুরোধ) করার একটি আধুনিক উপায়। এটি প্রতিশ্রুতি প্রদান করে এবং পুরানো প্রতিস্থাপনের জন্য ডিজাইন করা হয়েছে XMLHttpRequest

fetch("https://api.example.com/data")
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

6. JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) :
JSON হল একটি হালকা ওজনের ডেটা আদান-প্রদানের ফর্ম্যাট যা মানুষের পক্ষে পড়তে এবং লিখতে সহজ এবং মেশিনগুলিকে পার্স করা এবং তৈরি করা সহজ। এটি একটি সার্ভার এবং একটি ওয়েব অ্যাপ্লিকেশনের মধ্যে ডেটা বিনিময়ের জন্য ব্যাপকভাবে ব্যবহৃত হয়।

const jsonData = '{"name": "Alice", "age": 30}';
const parsedData = JSON.parse(jsonData);
console.log(parsedData.name); // Outputs: Alice

7. লোকাল স্টোরেজ এবং সেশন স্টোরেজ :
লোকাল স্টোরেজ এবং সেশন স্টোরেজ হল এপিআই যা আপনাকে একটি ওয়েব ব্রাউজারে কী-ভ্যালু জোড়া সঞ্চয় করতে দেয়। স্থানীয় সঞ্চয়স্থানে সংরক্ষিত ডেটা ব্রাউজার বন্ধ হওয়ার পরেও টিকে থাকে, যখন সেশন স্টোরেজে সঞ্চিত ডেটা শুধুমাত্র একই ব্রাউজার সেশনের সময় উপলব্ধ থাকে।

localStorage.setItem("username", "Alice");
const username = localStorage.getItem("username");
console.log(username); // Outputs: Alice

এগুলি জাভাস্ক্রিপ্টের কিছু অতিরিক্ত ধারণা যা ভাষার সাথে কাজ করার সময় আপনার বোঝার এবং ক্ষমতা বাড়াতে পারে। জাভাস্ক্রিপ্ট হল একটি বহুমুখী এবং গতিশীল ভাষা যেখানে বিস্তৃত বৈশিষ্ট্য রয়েছে যা ওয়েব ডেভেলপমেন্ট এবং এর বাইরে বিভিন্ন কাজের জন্য ব্যবহার করা যেতে পারে।

জাভাস্ক্রিপ্ট বিবিধ

জাভাস্ক্রিপ্ট JSON

JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) হল একটি লাইটওয়েট ডেটা ইন্টারচেঞ্জ ফরম্যাট যা মানুষের পড়া এবং লিখতে এবং মেশিনের জন্য পার্স এবং জেনারেট করা উভয়ের পক্ষেই সহজ। এটি প্রায়শই একটি সার্ভার এবং একটি ওয়েব অ্যাপ্লিকেশনের মধ্যে ডেটা বিনিময় করতে ব্যবহৃত হয়, এটি API এবং ডেটা স্টোরেজের জন্য একটি সাধারণ বিন্যাস তৈরি করে৷

JSON-এর একটি সহজ এবং স্বজ্ঞাত সিনট্যাক্স রয়েছে, যা কী-মান জোড়া এবং নেস্টেড কাঠামো নিয়ে গঠিত। এটি প্রাথমিকভাবে অবজেক্ট এবং অ্যারেগুলির মতো কাঠামোগত ডেটা উপস্থাপন করতে ব্যবহৃত হয়। এখানে JSON সিনট্যাক্সের একটি প্রাথমিক ওভারভিউ রয়েছে:

JSON অবজেক্ট :
JSON-এ একটি অবজেক্ট কোঁকড়া বন্ধনীতে আবদ্ধ {}এবং কমা দ্বারা পৃথক করা কী-মানের জোড়া নিয়ে গঠিত।

{
  "name": "Alice",
  "age": 30,
  "city": "New York"
}

JSON অ্যারে :
JSON-এ একটি অ্যারে বর্গাকার বন্ধনীতে আবদ্ধ []এবং কমা দ্বারা পৃথক করা ক্রমকৃত মান নিয়ে গঠিত।

["apple", "banana", "orange"]

নেস্টেড স্ট্রাকচার :
JSON অবজেক্ট এবং অ্যারেগুলির নেস্টিং সমর্থন করে, আপনাকে আরও জটিল ডেটা স্ট্রাকচারের প্রতিনিধিত্ব করতে দেয়।

{
  "person": {
    "name": "Bob",
    "age": 25
  },
  "fruits": ["apple", "banana"]
}

সমর্থিত ডেটা প্রকার :
JSON বিভিন্ন ডেটা প্রকারকে সমর্থন করে, যার মধ্যে রয়েছে:

  • স্ট্রিংস: ডবল উদ্ধৃতিতে আবদ্ধ।
  • সংখ্যা: পূর্ণসংখ্যা বা ভাসমান-বিন্দু সংখ্যা।
  • বুলিয়ানস: trueবা false
  • নাল: কীওয়ার্ড দ্বারা প্রতিনিধিত্ব করা হয় null
  • অবজেক্ট: কী-মানের জোড়া কোঁকড়া বন্ধনীতে আবদ্ধ।
  • অ্যারে: বর্গাকার বন্ধনীতে আবদ্ধ মানগুলির অর্ডারকৃত সংগ্রহ।

JSON এবং JavaScript অবজেক্টের মধ্যে রূপান্তর :
JavaScript-এ, আপনি JSON.parse()JSON স্ট্রিং পার্স করতে এবং জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করতে পদ্ধতিটি ব্যবহার করতে পারেন। বিপরীতভাবে, আপনি JSON.stringify()একটি জাভাস্ক্রিপ্ট অবজেক্টকে JSON স্ট্রিংয়ে রূপান্তর করতে পদ্ধতিটি ব্যবহার করতে পারেন।

const jsonData = '{"name": "Alice", "age": 30}';
const parsedData = JSON.parse(jsonData);
console.log(parsedData.name); // Outputs: Alice

const jsObject = { name: "Bob", age: 25 };
const jsonString = JSON.stringify(jsObject);
console.log(jsonString); // Outputs: {"name":"Bob","age":25}

JSON ডেটা এক্সচেঞ্জ এবং কনফিগারেশন সেটিংসের জন্য ওয়েব ডেভেলপমেন্টে ব্যাপকভাবে ব্যবহৃত হয়। এটি একটি ভাষা-অজ্ঞেয়বাদী বিন্যাস, যার অর্থ এটি জাভাস্ক্রিপ্টের মধ্যে সীমাবদ্ধ নয় এবং বিভিন্ন প্রোগ্রামিং ভাষা এবং প্ল্যাটফর্মের সাথে ব্যবহার করা যেতে পারে।

জাভাস্ক্রিপ্ট তারিখ এবং সময়

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

Dateআপনি কিভাবে জাভাস্ক্রিপ্টে বস্তুটি ব্যবহার করতে পারেন তা এখানে :

একটি তারিখ অবজেক্ট তৈরি করা :
আপনি কনস্ট্রাক্টর Dateব্যবহার করে একটি নতুন অবজেক্ট তৈরি করতে পারেন new Date()। আপনি যদি কোনো যুক্তি প্রদান না করেন, তাহলে এটি বর্তমান তারিখ এবং সময়কে উপস্থাপন করবে।

const currentDate = new Date();
console.log(currentDate);

বিভিন্ন উপাদান পাওয়া :
আপনি একটি বস্তুর বিভিন্ন উপাদান Dateযেমন বছর, মাস, দিন, ঘন্টা, মিনিট, সেকেন্ড এবং মিলিসেকেন্ড বের করতে পারেন।

const year = currentDate.getFullYear();
const month = currentDate.getMonth(); // Note: Months are zero-based (0 = January, 11 = December)
const day = currentDate.getDate();
const hours = currentDate.getHours();
const minutes = currentDate.getMinutes();
const seconds = currentDate.getSeconds();
const milliseconds = currentDate.getMilliseconds();

তারিখ বিন্যাস :
আপনি বিভিন্ন পদ্ধতি ব্যবহার করে তারিখ এবং সময় ফর্ম্যাট করতে পারেন, কিন্তু Intl.DateTimeFormatবস্তুটি তারিখগুলি ফর্ম্যাট করার জন্য একটি নমনীয় এবং প্রমিত উপায় প্রদান করে।

const options = { year: 'numeric', month: 'long', day: 'numeric' };
const formattedDate = new Intl.DateTimeFormat('en-US', options).format(currentDate);
console.log(formattedDate);

তারিখ এবং সময় নির্ধারণ : আপনি সংশ্লিষ্ট সেটার পদ্ধতি ব্যবহার করে
একটি বস্তুর বিভিন্ন উপাদান সেট করতে পারেন ।Date

currentDate.setFullYear(2023);
currentDate.setMonth(7); // August (0-based)
currentDate.setDate(11);
currentDate.setHours(14);
currentDate.setMinutes(30);
currentDate.setSeconds(0);

তারিখের গাণিতিক পারফর্মিং : আপনি টাইমস্ট্যাম্প পেতে, গণনা সম্পাদন করতে এবং তারপর গণনা করা টাইমস্ট্যাম্প ব্যবহার করে একটি নতুন অবজেক্ট তৈরি করতে পদ্ধতি
ব্যবহার করে তারিখগুলির সাথে গাণিতিক ক্রিয়াকলাপ সম্পাদন করতে পারেন ।getTime()Date

const timestamp = currentDate.getTime();
const oneDayInMillis = 24 * 60 * 60 * 1000;
const tomorrowTimestamp = timestamp + oneDayInMillis;
const tomorrow = new Date(tomorrowTimestamp);

সময় অঞ্চলগুলির সাথে কাজ করা :
জাভাস্ক্রিপ্টের অন্তর্নির্মিত Dateঅবজেক্টটি সময় অঞ্চলগুলিকে খুব ভালভাবে পরিচালনা করে না। আপনি যদি টাইম জোন নিয়ে ব্যাপকভাবে কাজ করতে চান, তাহলে তৃতীয় পক্ষের লাইব্রেরি moment-timezoneবা আধুনিক Temporalবস্তু ব্যবহার করার কথা বিবেচনা করুন।

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

জাভাস্ক্রিপ্ট বন্ধ

ক্লোজার হল জাভাস্ক্রিপ্টের একটি মৌলিক ধারণা যা তখন ঘটে যখন একটি ফাংশন যে স্কোপটি তৈরি করা হয়েছিল সেখান থেকে ভেরিয়েবলগুলিকে “মনে রাখে”, এমনকি সেই সুযোগটি প্রস্থান করার পরেও। এটি ফাংশনটিকে সেই ভেরিয়েবল এবং তাদের মানগুলিতে অ্যাক্সেস বজায় রাখার অনুমতি দেয়, এমনকি যদি সেগুলি কোডের অন্যান্য অংশ থেকে অ্যাক্সেসযোগ্য না হয়।

এখানে জাভাস্ক্রিপ্টে বন্ধের একটি ব্যাখ্যা রয়েছে:

একটি ক্লোজার তৈরি করা :
ক্লোজারগুলি সাধারণত তৈরি হয় যখন একটি ফাংশন অন্য ফাংশনের (বাহ্যিক ফাংশন) মধ্যে সংজ্ঞায়িত করা হয় এবং অভ্যন্তরীণ ফাংশনটি বাইরের ফাংশনের সুযোগ থেকে ভেরিয়েবলকে বোঝায়।

function outer() {
    const outerValue = 10;

    function inner() {
        console.log(outerValue); // inner function has access to outerValue
    }

    return inner;
}

const closureFunction = outer();
closureFunction(); // Outputs: 10

এই উদাহরণে, এটি একটি বন্ধ কারণ এটি কার্যকর করা শেষ হলেও innerঅ্যাক্সেস বজায় রাখে ।outerValueouter

সাধারণ ব্যবহারের ক্ষেত্রে :

  • ডেটা এনক্যাপসুলেশন : ক্লোজারগুলি ব্যক্তিগত ভেরিয়েবল এবং পদ্ধতি তৈরি করতে সাহায্য করে, কারণ বাইরের ফাংশনের সুযোগের মধ্যে ভেরিয়েবলগুলি বাইরে থেকে সরাসরি অ্যাক্সেসযোগ্য নয়।
  • কলব্যাক : কলব্যাকটি কার্যকর করার সময় প্রসঙ্গ এবং প্রাসঙ্গিক ডেটাতে অ্যাক্সেস বজায় রাখতে প্রায়শই অ্যাসিঙ্ক্রোনাস অপারেশনগুলির সাথে ক্লোজার ব্যবহার করা হয়।

লুপিং এবং ক্লোসার :
শেয়ার্ড স্কোপের কারণে লুপগুলিতে ব্যবহার করা হলে বন্ধ হওয়া অপ্রত্যাশিত আচরণের দিকে নিয়ে যেতে পারে।

for (var i = 0; i < 5; i++) {
    setTimeout(function() {
        console.log(i); // Outputs: 5, 5, 5, 5, 5
    }, 1000);
}

এই উদাহরণে, সমস্ত টাইমআউট লগ হবে 5কারণ টাইমআউটের বন্ধগুলি একই পরিবর্তনশীলকে উল্লেখ করে i, যা প্রতিটি পুনরাবৃত্তিতে পরিবর্তিত হয়।

এটি মোকাবেলা করার জন্য, আপনি প্রতিটি পুনরাবৃত্তির জন্য একটি নতুন সুযোগ তৈরি করতে একটি IIFE (ইমিডিয়েটলি ইনভোকড ফাংশন এক্সপ্রেশন) ব্যবহার করতে পারেন।

for (var i = 0; i < 5; i++) {
    (function(index) {
        setTimeout(function() {
            console.log(index); // Outputs: 0, 1, 2, 3, 4
        }, 1000);
    })(i);
}

ক্লোজারগুলি জাভাস্ক্রিপ্টে একটি শক্তিশালী এবং প্রায়শই ব্যবহৃত বৈশিষ্ট্য। যদিও তারা দরকারী ক্ষমতা প্রদান করে, তারা যদি সঠিকভাবে বোঝা এবং পরিচালনা না করা হয় তবে তারা অনাকাঙ্ক্ষিত আচরণের দিকেও যেতে পারে। বন্ধ এবং তাদের মিথস্ক্রিয়া সম্পর্কে সচেতন হওয়া গুরুত্বপূর্ণ, বিশেষত যখন সুযোগ এবং অ্যাসিঙ্ক্রোনাস ক্রিয়াকলাপ জড়িত এমন ফাংশনগুলির সাথে কাজ করার সময়।

জাভাস্ক্রিপ্ট এই

জাভাস্ক্রিপ্টে, thisকীওয়ার্ডটি বর্তমান এক্সিকিউশন প্রসঙ্গ বা যে প্রেক্ষাপটে একটি ফাংশন কল করা হয় তা বোঝায়। কিভাবে একটি ফাংশন আহ্বান করা হয় তার উপর নির্ভর করে এটি বিভিন্ন মান নিতে পারে। thisআপনার কোডে সঠিক প্রসঙ্গ এবং আচরণের জন্য কীভাবে কাজ করে তা বোঝা অপরিহার্য।

thisবিভিন্ন প্রসঙ্গে কীভাবে আচরণ করে তা এখানে :

1. গ্লোবাল কনটেক্সট :
গ্লোবাল প্রেক্ষাপটে (কোনও ফাংশনের বাইরে), thisগ্লোবাল অবজেক্টকে বোঝায়, যা সাধারণত windowওয়েব ব্রাউজারে অবজেক্ট।

console.log(this === window); // Outputs: true (in a browser environment)

2. ফাংশন কনটেক্সট :
একটি নিয়মিত ফাংশনে (কোনও বস্তুর পদ্ধতি নয়), এখনও নন-স্ট্রিক মোডে এবং কঠোর মোডে thisগ্লোবাল অবজেক্টকে বোঝায় ।undefined

function myFunction() {
    console.log(this);
}

myFunction(); // Outputs: window (in non-strict mode) or undefined (in strict mode)

3. পদ্ধতি প্রসঙ্গ :
যখন একটি ফাংশন একটি বস্তুর একটি পদ্ধতি হিসাবে বলা হয়, thisবস্তু নিজেই বোঝায়।

const person = {
    name: "Alice",
    sayHello: function() {
        console.log(`Hello, my name is ${this.name}`);
    }
};

person.sayHello(); // Outputs: Hello, my name is Alice

4. কনস্ট্রাক্টর ফাংশন কনটেক্সট :
কনস্ট্রাক্টর ফাংশনের ভিতরে (বস্তু তৈরি করতে ব্যবহৃত হয়), thisনতুন তৈরি করা বস্তুকে বোঝায়।

function Person(name) {
    this.name = name;
}

const alice = new Person("Alice");
console.log(alice.name); // Outputs: Alice

5. ইভেন্ট হ্যান্ডলার :
ইভেন্ট হ্যান্ডলার ফাংশনে, thisসাধারণত ইভেন্টটিকে ট্রিগার করে এমন উপাদানকে বোঝায়।

document.querySelector("button").addEventListener("click", function() {
    console.log(this); // Refers to the clicked button element
});

6. অ্যারো ফাংশন :
অ্যারো ফাংশনগুলির নিজস্ব নেই this। পরিবর্তে, তারা thisএনক্লোজিং ফাংশন বা প্রসঙ্গ থেকে মানটি উত্তরাধিকার সূত্রে পায়।

const person = {
    name: "Alice",
    sayHello: () => {
        console.log(`Hello, my name is ${this.name}`);
    }
};

person.sayHello(); // Outputs: Hello, my name is undefined

এটা বোঝা গুরুত্বপূর্ণ যে thisনির্দিষ্ট পরিস্থিতিতে এর মান অপ্রত্যাশিত হতে পারে, বিশেষ করে নেস্টেড ফাংশন, অ্যাসিঙ্ক্রোনাস কোড এবং জটিল প্রসঙ্গগুলির সাথে কাজ করার সময়। এর আচরণ thisনির্ভর করে কিভাবে একটি ফাংশন আহ্বান করা হয় এবং সঠিক প্রেক্ষাপট বজায় রাখার জন্য এবং আপনার কোডে অপ্রত্যাশিত বাগগুলি এড়ানোর জন্য এর সঠিক ব্যবহার অত্যন্ত গুরুত্বপূর্ণ।

জাভাস্ক্রিপ্ট ব্যবহার কঠোর

'use strict'জাভাস্ক্রিপ্টের একটি প্রাগমা (নির্দেশনা) যা একটি স্ক্রিপ্ট বা একটি ফাংশনে কঠোর মোড সক্ষম করে। স্ট্রিক্ট মোড হল ECMAScript 5 (ES5) এ প্রবর্তিত একটি বৈশিষ্ট্য যা জাভাস্ক্রিপ্টে সাধারণ কোডিং ভুল এবং “খারাপ” আচরণ ধরতে সাহায্য করে নির্দিষ্ট কিছু ক্রিয়াকলাপের জন্য ত্রুটি তুলে যা অন্যথায় নীরবে ব্যর্থ হবে বা অপ্রত্যাশিতভাবে আচরণ করবে।

কঠোর মোড সক্ষম করতে, আপনি কেবল 'use strict'একটি স্ক্রিপ্ট বা ফাংশনের শুরুতে নির্দেশিকা অন্তর্ভুক্ত করুন৷ আপনি কিভাবে এটি ব্যবহার করতে পারেন তা এখানে:

একটি স্ক্রিপ্টে কঠোর মোড সক্ষম করা :

'use strict';

// Your JavaScript code goes here

একটি ফাংশনে কঠোর মোড সক্ষম করা :

function myFunction() {
    'use strict';

    // Your code here
}

কঠোর মোডের সুবিধা :

  • নীরব ত্রুটি প্রতিরোধ করা : নন-কঠোর মোডে, কিছু ক্রিয়া যা আদর্শভাবে ত্রুটিগুলিকে ট্রিগার করবে সেগুলি নীরবে ব্যর্থ হওয়ার অনুমতি দেওয়া হয়। কঠোর মোড এই ত্রুটিগুলি স্পষ্ট করে তোলে।
  • ভেরিয়েবল সীমাবদ্ধ করা : কঠোর মোডে, ভেরিয়েবলগুলিকে প্রথমে ঘোষণা না করে ব্যবহার করা (এর সাথে varletবাconst ) ব্যবহার করলে একটি ত্রুটি দেখা দেবে৷
  • কোন অন্তর্নিহিত গ্লোবাল ভেরিয়েবল নেই : কঠোর মোডে, ভুলবশত গ্লোবাল ভেরিয়েবলগুলি প্রথমে ঘোষণা না করে তৈরি করলে একটি ত্রুটি দেখা দেবে।
  • ফাংশনে “এই” : কঠোর মোডে, একটি ফাংশনের ভিতরের মান thisযা একটি অবজেক্টের পদ্ধতি নয় তা হবে undefinedগ্লোবাল অবজেক্টের পরিবর্তে।
  • আরও সংরক্ষিত শব্দ : কঠোর মোডে, কিছু অতিরিক্ত শনাক্তকারী ভবিষ্যতের কীওয়ার্ড হিসাবে সংরক্ষিত থাকে, যা আপনাকে পরিবর্তনশীল বা ফাংশনের নাম হিসাবে ব্যবহার করতে বাধা দেয়।
  • অপারেটর মুছুন : কঠোর মোডে, deleteভেরিয়েবল, ফাংশন আর্গুমেন্ট এবং ফাংশনে অপারেটর ব্যবহার করার অনুমতি নেই।

উদাহরণ :

'use strict';

function myFunction() {
    undeclaredVar = 10; // Error: undeclaredVar is not defined
}

myFunction();

ব্যবহার করা 'use strict'সাধারণত একটি ভাল অনুশীলন হিসাবে বিবেচিত হয় কারণ এটি সাধারণ প্রোগ্রামিং ভুলগুলি তাড়াতাড়ি ধরতে সাহায্য করে এবং একটি নিরাপদ কোডিং শৈলীকে উত্সাহিত করে। এটি লক্ষণীয় যে কঠোর মোড বিদ্যমান কোডের আচরণ পরিবর্তন করতে পারে, তাই বিদ্যমান প্রকল্পগুলিতে এটি সক্রিয় করার সময় সতর্ক থাকুন।

JS Iterators এবং Iterables

জাভাস্ক্রিপ্টে, ইটারেটর এবং ইটারেবল হল ECMAScript 6 (ES6) এ প্রবর্তিত বৈশিষ্ট্য যা অ্যারে, স্ট্রিং এবং আরও জটিল ডেটা স্ট্রাকচারের মতো ডেটা সংগ্রহের উপর দিয়ে অতিক্রম এবং পুনরাবৃত্তি করার জন্য একটি প্রমিত উপায় প্রদান করে।

পুনরাবৃত্তিযোগ্য :
একটি পুনরাবৃত্তিযোগ্য একটি বস্তু যা তার Symbol.iteratorপদ্ধতির মাধ্যমে একটি পুনরাবৃত্তিকারীকে সংজ্ঞায়িত করে। এই পুনরাবৃত্তটি কীভাবে সংগ্রহের উপাদানগুলি একে একে অ্যাক্সেস করা হয় তা নিয়ন্ত্রণ করতে ব্যবহৃত হয়।

const iterableArray = [1, 2, 3];

console.log(Symbol.iterator in iterableArray); // Outputs: true

পুনরাবৃত্তিকারী :
একটি পুনরাবৃত্তিকারী একটি পদ্ধতি সহ একটি বস্তু next()যা সংগ্রহের পরবর্তী উপাদানগুলিতে অ্যাক্সেস প্রদান করে। পদ্ধতিটি next()দুটি বৈশিষ্ট্য সহ একটি বস্তু ফেরত দেয়: value(সংগ্রহের পরবর্তী মান) এবং done(একটি বুলিয়ান নির্দেশ করে যে পুনরাবৃত্তিকারী সংগ্রহের শেষে পৌঁছেছে কিনা)।

const iterableArray = [1, 2, 3];
const iterator = iterableArray[Symbol.iterator]();

console.log(iterator.next()); // Outputs: { value: 1, done: false }
console.log(iterator.next()); // Outputs: { value: 2, done: false }
console.log(iterator.next()); // Outputs: { value: 3, done: false }
console.log(iterator.next()); // Outputs: { value: undefined, done: true }

লুপের জন্য :
লুপটি for...ofপুনরাবৃত্তি করার জন্য একটি সুবিধাজনক উপায় প্রদান করে, স্বয়ংক্রিয়ভাবে আপনার জন্য পুনরাবৃত্তিকারী পরিচালনা করে।

const iterableArray = [1, 2, 3];

for (const element of iterableArray) {
    console.log(element);
}

কাস্টম ইটারেবল :
আপনি সংজ্ঞায়িত করে আপনার নিজস্ব পুনরাবৃত্তিযোগ্য তৈরি করতে পারেনSymbol.iterator আপনি আপনার অবজেক্টের পদ্ধতিএটি আপনাকে আপনার বস্তুগুলিকে কীভাবে পুনরাবৃত্তি করা হয় তা কাস্টমাইজ করতে দেয়।

const customIterable = {
    items: [4, 5, 6],
    [Symbol.iterator]() {
        let index = 0;
        return {
            next: () => {
                if (index < this.items.length) {
                    return { value: this.items[index++], done: false };
                } else {
                    return { done: true };
                }
            }
        };
    }
};

for (const element of customIterable) {
    console.log(element);
}

স্ট্রিং পুনরাবৃত্তি :
স্ট্রিংগুলিও পুনরাবৃত্তিযোগ্য, আপনাকে তাদের অক্ষরগুলির উপর পুনরাবৃত্তি করতে দেয়।

const myString = "Hello";

for (const char of myString) {
    console.log(char);
}

সংকলনগুলির সাথে সামঞ্জস্যপূর্ণ এবং অনুমানযোগ্য পদ্ধতিতে কাজ করার জন্য পুনরাবৃত্তিকারী এবং পুনরাবৃত্তিযোগ্যগুলি অত্যন্ত গুরুত্বপূর্ণ। এগুলি ডেটা স্ট্রাকচারগুলিকে অতিক্রম করার একটি প্রমিত উপায় প্রদান করে, এটি পাঠযোগ্য এবং রক্ষণাবেক্ষণযোগ্য কোড লেখা সহজ করে তোলে।

জাভাস্ক্রিপ্ট জেনারেটর

জেনারেটর হল ECMAScript 6 (ES6) এ প্রবর্তিত একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে আরও নমনীয় এবং নিয়ন্ত্রিত পদ্ধতিতে পুনরাবৃত্তিকারী তৈরি করতে দেয়। yieldনিয়মিত ফাংশনগুলির বিপরীতে যা কার্যকর করে এবং অবিলম্বে একটি মান ফেরত দেয়, জেনারেটরগুলি আপনাকে কীওয়ার্ড ব্যবহার করে বিভিন্ন পয়েন্টে একটি ফাংশনের সম্পাদনকে বিরতি এবং পুনরায় শুরু করার অনুমতি দেয়।

জাভাস্ক্রিপ্টে জেনারেটরগুলি কীভাবে কাজ করে তার একটি ওভারভিউ এখানে রয়েছে:

একটি জেনারেটর ফাংশন সংজ্ঞায়িত করা :
একটি জেনারেটর ফাংশন কীওয়ার্ডের *পরে একটি তারকাচিহ্ন ব্যবহার করে সংজ্ঞায়িত করা হয় function। জেনারেটর ফাংশনের অভ্যন্তরে, আপনি yieldকীওয়ার্ডটি ব্যবহার করে মান উত্পাদিত করতে পারেন যাতে পুনরাবৃত্তি করা যায়।

function* myGenerator() {
    yield 1;
    yield 2;
    yield 3;
}

const generator = myGenerator();
console.log(generator.next()); // Outputs: { value: 1, done: false }
console.log(generator.next()); // Outputs: { value: 2, done: false }
console.log(generator.next()); // Outputs: { value: 3, done: false }
console.log(generator.next()); // Outputs: { value: undefined, done: true }

বিরাম দেওয়া এবং এক্সিকিউশন পুনরায় শুরু করা :
যখনyield একটি জেনারেটর ফাংশনে কীওয়ার্ডের সম্মুখীন হয়, তখন ফাংশনটির এক্সিকিউশন বিরাম দেওয়া হয় এবং প্রাপ্ত মানটি কলারের কাছে ফেরত দেওয়া হয়।

জেনারেটরে মান পাঠানো :
আপনি পদ্ধতিটি ব্যবহার করে জেনারেটরে মান ফেরত পাঠাতে পারেন generator.next(value)। প্রেরিত মান অভিব্যক্তির ফলাফলে পরিণত হয় yield

function* counter() {
    let count = 0;
    while (true) {
        const increment = yield count;
        if (increment) {
            count += increment;
        } else {
            count++;
        }
    }
}

const counterGenerator = counter();
console.log(counterGenerator.next());     // Outputs: { value: 0, done: false }
console.log(counterGenerator.next(5));    // Outputs: { value: 5, done: false }
console.log(counterGenerator.next(2));    // Outputs: { value: 7, done: false }

জেনারেটরগুলি কাস্টম ইটারেটর তৈরি করতে, সিঙ্ক্রোনাস-সুদর্শন সিনট্যাক্স ব্যবহার করে অ্যাসিঙ্ক্রোনাস কোডের সাথে কাজ করতে এবং আরও সংগঠিত উপায়ে জটিল অবস্থা পরিচালনার জন্য দরকারী। বৃহৎ ডেটা সেট বা পরিস্থিতিগুলির সাথে মোকাবিলা করার সময় এগুলি বিশেষভাবে কার্যকর হয় যেগুলিকে বিরতি দেওয়া এবং পুনরায় শুরু করা প্রয়োজন৷

জাভাস্ক্রিপ্ট রেজেক্স

রেগুলার এক্সপ্রেশন, যাকে প্রায়ই regex বা regexp হিসাবে উল্লেখ করা হয়, জাভাস্ক্রিপ্টে প্যাটার্ন ম্যাচিং এবং স্ট্রিং ম্যানিপুলেশনের জন্য একটি শক্তিশালী টুল। তারা আপনাকে নির্দিষ্ট প্যাটার্নের উপর ভিত্তি করে পাঠ্য অনুসন্ধান এবং ম্যানিপুলেট করার অনুমতি দেয়। জাভাস্ক্রিপ্টে, আপনি বিল্ট-ইন ব্যবহার করে রেগুলার এক্সপ্রেশনের সাথে কাজ করতে পারেনRegExp অবজেক্ট ব্যবহার করে রেগুলার এক্সপ্রেশনের সাথে কাজ করতে পারেন।

এখানে জাভাস্ক্রিপ্টে নিয়মিত এক্সপ্রেশন ব্যবহার করার একটি ওভারভিউ রয়েছে:

একটি রেগুলার এক্সপ্রেশন তৈরি করা :
আপনি কনস্ট্রাক্টর ব্যবহার করে বা স্ল্যাশ ( RegExpএ আবদ্ধ রেজেক্স আক্ষরিক ব্যবহার করে একটি রেগুলার এক্সপ্রেশন তৈরি করতে পারেন।/

const pattern = /abc/;
const regex = new RegExp("abc");

ম্যাচিং এবং টেস্টিং : একটি স্ট্রিং প্যাটার্নের সাথে মেলে কিনা তা পরীক্ষা করতে
আপনি .test()একটি রেগুলার এক্সপ্রেশনের পদ্ধতি ব্যবহার করতে পারেন।

const pattern = /apple/;
const text = "apple pie";

console.log(pattern.test(text)); // Outputs: true

ম্যাচিং এবং এক্সট্রাক্টিং :
আপনি .match()একটি রেগুলার এক্সপ্রেশনের উপর ভিত্তি করে মিল বের করতে একটি স্ট্রিংয়ের পদ্ধতি ব্যবহার করতে পারেন।

const pattern = /(\d{2})-(\d{2})-(\d{4})/;
const text = "Date: 11-25-2023";

const result = text.match(pattern);
console.log(result); // Outputs: ["11-25-2023", "11", "25", "2023"]

প্রতিস্থাপন :
আপনি .replace()একটি নির্দিষ্ট প্রতিস্থাপন স্ট্রিং সঙ্গে একটি রেগুলার এক্সপ্রেশনের সাথে মেলে এমন একটি স্ট্রিংয়ের অংশগুলি প্রতিস্থাপন করতে একটি স্ট্রিংয়ের পদ্ধতি ব্যবহার করতে পারেন।

const pattern = /apple/g;
const text = "apple apple orange";

const replacedText = text.replace(pattern, "fruit");
console.log(replacedText); // Outputs: "fruit fruit orange"

সংশোধক :
রেগুলার এক্সপ্রেশন কীভাবে আচরণ করা উচিত তা নির্দিষ্ট করতে মডিফায়ার ব্যবহার করা হয়। সাধারণ সংশোধক অন্তর্ভুক্ত করে g(গ্লোবাল) সমস্ত ঘটনার সাথে মেলে এবং i(কেস-সংবেদনশীল)।

const pattern = /apple/gi;
const text = "Apple apple APPLE";

const matches = text.match(pattern);
console.log(matches); // Outputs: ["Apple", "apple", "APPLE"]

ক্যারেক্টার ক্লাস :
ক্যারেক্টার ক্লাস আপনাকে নির্দিষ্ট অক্ষর মেলানোর অনুমতি দেয়। উদাহরণস্বরূপ, \dযেকোনো অঙ্কের সাথে মেলে, \wকোনো শব্দের অক্ষরের সাথে মেলে এবং .একটি নতুন লাইন ছাড়া যেকোনো অক্ষরের সাথে মেলে।

const pattern = /\d+/;
console.log(pattern.test("123")); // Outputs: true
console.log(pattern.test("abc")); // Outputs: false

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

জাভাস্ক্রিপ্ট ব্রাউজার ডিবাগিং

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

1. ব্রাউজার ডেভেলপার কনসোল :
প্রতিটি প্রধান ওয়েব ব্রাউজারে একটি ডেভেলপার কনসোল থাকে যা জাভাস্ক্রিপ্ট কোডের সাথে ইন্টারঅ্যাক্ট এবং ডিবাগ করার জন্য একটি কমান্ড-লাইন ইন্টারফেস প্রদান করে। F12আপনি বা Ctrl+Shift+I(উইন্ডোজ/লিনাক্স) বা টিপে কনসোল খুলতে পারেনCmd+Option+Iআপনি বেশিরভাগ ব্রাউজারে

কনসোলে, আপনি করতে পারেন:

  • জাভাস্ক্রিপ্ট কোড সরাসরি এক্সিকিউট করুন।
  • ভেরিয়েবল এবং বস্তুর মান পরিদর্শন করুন।
  • কনসোল লগ, ত্রুটি এবং সতর্কতা দেখুন।
  • ডিবাগিংয়ের জন্য ব্রেকপয়েন্ট সেট করুন।

2. ব্রেকপয়েন্ট সেট করা :
ব্রেকপয়েন্ট হল এমন মার্কার যা আপনি আপনার জাভাস্ক্রিপ্ট কোডে সেট করতে পারেন যা একটি নির্দিষ্ট লাইনে প্রোগ্রামের এক্সিকিউশনকে বিরতি দেয়। এটি আপনাকে ভেরিয়েবলের অবস্থা পরিদর্শন করতে এবং কোডের মাধ্যমে একবারে এক লাইনে ধাপ করতে দেয়।

বিকাশকারী কনসোলের উত্স বা ডিবাগার ট্যাবে, আপনি করতে পারেন:

  • লাইন নম্বরে ক্লিক করে ব্রেকপয়েন্ট সেট করুন।
  • বিরতি এবং মৃত্যুদন্ড পুনরায় শুরু করুন.
  • ধাপে ধাপে, মধ্যে, এবং ফাংশন আউট.
  • পরিধিতে পরিবর্তনশীল মান পরিদর্শন করুন।

3. কনসোল লগিং : স্টেটমেন্ট
ব্যবহার করা console.log()একটি সাধারণ ডিবাগিং কৌশল। প্রাসঙ্গিক তথ্য লগ ইন করে, আপনি আপনার কোডের প্রবাহ ট্র্যাক করতে পারেন, সমস্যাগুলি সনাক্ত করতে পারেন এবং বিভিন্ন পয়েন্টে ভেরিয়েবলের মান যাচাই করতে পারেন৷

console.log("This is a log message");
console.log(variableName);

4. ডিবাগিং টুলস :
আধুনিক ব্রাউজারগুলি উন্নত ডিবাগিং টুলের সাথে আসে যার মধ্যে বৈশিষ্ট্যগুলি অন্তর্ভুক্ত থাকে:

  • কল স্ট্যাক: ফাংশন কলের ক্রম প্রদর্শন করা একটি ত্রুটির দিকে পরিচালিত করে।
  • এক্সপ্রেশন দেখুন: নির্দিষ্ট ভেরিয়েবলের মান নিরীক্ষণ।
  • নেটওয়ার্ক পরিদর্শন: নেটওয়ার্ক অনুরোধ এবং প্রতিক্রিয়া বিশ্লেষণ।
  • DOM পরিদর্শন: বাস্তব সময়ে HTML এবং CSS পরিদর্শন এবং পরিবর্তন করা।

5. ব্যতিক্রমগুলির উপর বিরতি :
বেশিরভাগ ব্রাউজার আপনাকে ব্রেকপয়েন্টগুলি কনফিগার করার অনুমতি দেয় যা ব্যতিক্রম (ত্রুটি) নিক্ষেপ করা হলে ট্রিগার করে। এটি আপনাকে ত্রুটিগুলি ঘটলে ধরতে এবং সেগুলি যে প্রেক্ষাপটে নিক্ষেপ করা হয়েছে তা বুঝতে সহায়তা করে৷

6. সোর্স ম্যাপস :
সোর্স ম্যাপ হল এমন ফাইল যা আপনাকে মিনিফাইড বা ট্রান্সপিলড কোডকে তার আসল সোর্স কোডে ফিরে ম্যাপ করতে দেয়। এটি উত্পাদন কোড ডিবাগ করার জন্য বিশেষভাবে দরকারী।

এই ডিবাগিং কৌশলগুলি ব্যবহার করে, আপনি ব্রাউজার পরিবেশে কাজ করার সময় আপনার জাভাস্ক্রিপ্ট কোডের সমস্যাগুলিকে কার্যকরভাবে সনাক্ত করতে এবং সমাধান করতে পারেন৷

জাভাস্ক্রিপ্টের ব্যবহার

জাভাস্ক্রিপ্ট একটি বহুমুখী প্রোগ্রামিং ভাষা যা প্রাথমিকভাবে গতিশীল এবং ইন্টারেক্টিভ ওয়েব অ্যাপ্লিকেশন তৈরির জন্য ব্যবহৃত হয়। এর ব্যবহারগুলি শুধু ওয়েব ডেভেলপমেন্টের বাইরেও প্রসারিত এবং বিস্তৃত অ্যাপ্লিকেশন কভার করে। এখানে জাভাস্ক্রিপ্টের কিছু মূল ব্যবহার রয়েছে:

1. ওয়েব ডেভেলপমেন্ট:

  • ক্লায়েন্ট-সাইড স্ক্রিপ্টিং: জাভাস্ক্রিপ্ট মূলত ক্লায়েন্ট সাইডে ব্যবহার করা হয় ওয়েব পেজের ইন্টারঅ্যাকটিভিটি বাড়ানোর জন্য। এটি আপনাকে গতিশীল সামগ্রী তৈরি করতে, ব্যবহারকারীর ইনপুট পরিচালনা করতে এবং সম্পূর্ণ পৃষ্ঠা পুনরায় লোড করার প্রয়োজন ছাড়াই পৃষ্ঠা আপডেট করতে দেয়।
  • DOM ম্যানিপুলেশন: জাভাস্ক্রিপ্ট একটি ওয়েব পৃষ্ঠার ডকুমেন্ট অবজেক্ট মডেল (DOM) এর সাথে ইন্টারঅ্যাক্ট করতে ব্যবহৃত হয়, যা আপনাকে উপাদান এবং তাদের বৈশিষ্ট্যগুলিকে ম্যানিপুলেট এবং পরিবর্তন করতে দেয়।
  • ওয়েব অ্যানিমেশন: জাভাস্ক্রিপ্ট ব্যবহার করা যেতে পারে অ্যানিমেশন, ট্রানজিশন এবং ওয়েব পৃষ্ঠাগুলিতে প্রভাব তৈরি করতে, ব্যবহারকারীর অভিজ্ঞতা বাড়াতে।
  • ফর্ম বৈধকরণ: জাভাস্ক্রিপ্ট জমা দেওয়ার আগে ডেটা সঠিকভাবে প্রবেশ করা হয়েছে তা নিশ্চিত করতে ফর্মগুলিতে ব্যবহারকারীর ইনপুট যাচাই করতে পারে।

2. ফ্রন্ট-এন্ড ফ্রেমওয়ার্ক এবং লাইব্রেরি:

  • জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক এবং লাইব্রেরি যেমন React, Angular, এবং Vue.js জটিল ইউজার ইন্টারফেস তৈরি, স্টেট পরিচালনা এবং দক্ষতার সাথে ডেটা পরিচালনা করার জন্য টুল সরবরাহ করে।

3. ব্যাক-এন্ড ডেভেলপমেন্ট:

  • Node.js এর মতো সার্ভার-সাইড জাভাস্ক্রিপ্ট প্ল্যাটফর্মের আবির্ভাবের সাথে, জাভাস্ক্রিপ্ট এখন সার্ভার-সাইড অ্যাপ্লিকেশন, API এবং রিয়েল-টাইম অ্যাপ্লিকেশন তৈরির জন্য ব্যবহার করা যেতে পারে।

4. মোবাইল অ্যাপ ডেভেলপমেন্ট:

  • রিঅ্যাক্ট নেটিভ এবং নেটিভস্ক্রিপ্টের মতো প্রযুক্তি আপনাকে জাভাস্ক্রিপ্ট ব্যবহার করে ক্রস-প্ল্যাটফর্ম মোবাইল অ্যাপ্লিকেশন তৈরি করতে দেয়।

5. গেম ডেভেলপমেন্ট:

  • সহজ ব্রাউজার-ভিত্তিক গেম এবং ইন্টারেক্টিভ মাল্টিমিডিয়া অ্যাপ্লিকেশন তৈরির জন্য জাভাস্ক্রিপ্ট ব্যবহার করা যেতে পারে।

6. ডেস্কটপ অ্যাপ্লিকেশন:

  • ইলেক্ট্রনের মতো ফ্রেমওয়ার্ক ব্যবহার করে, ডেভেলপাররা জাভাস্ক্রিপ্ট সহ ওয়েব প্রযুক্তি ব্যবহার করে ক্রস-প্ল্যাটফর্ম ডেস্কটপ অ্যাপ্লিকেশন তৈরি করতে পারে।

7. ডেটা ভিজ্যুয়ালাইজেশন:

  • জাভাস্ক্রিপ্ট লাইব্রেরি যেমন D3.js এবং Chart.js ডেভেলপারদের ওয়েব পৃষ্ঠাগুলিতে ইন্টারেক্টিভ এবং গতিশীল ডেটা ভিজ্যুয়ালাইজেশন তৈরি করতে সক্ষম করে।

8. ওয়েব API এবং ইন্টিগ্রেশন:

  • জাভাস্ক্রিপ্ট বিভিন্ন ওয়েব API-এর সাথে ইন্টারঅ্যাক্ট করতে পারে, আপনাকে বাহ্যিক পরিষেবাগুলিকে একীভূত করতে, ডেটা পুনরুদ্ধার করতে এবং আপনার ওয়েব অ্যাপ্লিকেশনগুলির মধ্যে থেকে ক্রিয়া সম্পাদন করতে দেয়৷

9. ব্রাউজার এক্সটেনশন:

  • ওয়েব ব্রাউজারগুলির কার্যকারিতা বাড়ানোর জন্য জাভাস্ক্রিপ্ট ব্যবহার করে ব্রাউজার এক্সটেনশন এবং অ্যাড-অন তৈরি করা যেতে পারে।

10. IoT (ইন্টারনেট অফ থিংস):

  • জনি-ফাইভের মতো প্ল্যাটফর্মের সাথে, বিকাশকারীরা IoT ডিভাইসগুলিকে প্রোগ্রাম এবং নিয়ন্ত্রণ করতে JavaScript ব্যবহার করতে পারে।

11. ওয়েব স্ক্র্যাপিং এবং অটোমেশন:

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

12. মেশিন লার্নিং এবং এআই:

  • পাইথনের মতো অন্যান্য ভাষার মতো সাধারণ না হলেও, JavaScript-এ TensorFlow.js-এর মতো লাইব্রেরি রয়েছে যা ব্রাউজারে মেশিন লার্নিং এবং AI অ্যাপ্লিকেশন সক্ষম করে।

অ্যাপ্লিকেশনগুলির নমনীয়তা এবং বিস্তৃত পরিসর জাভাস্ক্রিপ্টকে নতুন এবং অভিজ্ঞ বিকাশকারী উভয়ের জন্যই একটি শক্তিশালী ভাষা করে তোলে, তারা ওয়েব ডেভেলপমেন্ট, অ্যাপ ডেভেলপমেন্ট, ডেটা ভিজ্যুয়ালাইজেশন বা অন্যান্য সৃজনশীল ব্যবহারের দিকে মনোনিবেশ করুক।

2791 Views
No Comments
Forward Messenger
1
No comments to “বিগিনারদের জন্য JS সম্পূর্ণ মৌলিক টিউটোরিয়াল”