<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Md. Ranju</title>
    <description>The latest articles on DEV Community by Md. Ranju (@muhammadranju).</description>
    <link>https://dev.to/muhammadranju</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1338536%2Fb646c4b0-9fe8-4d5d-8cf3-bbd9f9495aeb.jpg</url>
      <title>DEV Community: Md. Ranju</title>
      <link>https://dev.to/muhammadranju</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/muhammadranju"/>
    <language>en</language>
    <item>
      <title>JavaScript interview questions along with explanations in Bangla</title>
      <dc:creator>Md. Ranju</dc:creator>
      <pubDate>Tue, 15 Oct 2024 16:06:58 +0000</pubDate>
      <link>https://dev.to/muhammadranju/javascript-interview-questions-along-with-explanations-in-bangla-9fo</link>
      <guid>https://dev.to/muhammadranju/javascript-interview-questions-along-with-explanations-in-bangla-9fo</guid>
      <description>&lt;h2&gt;
  
  
  1. JavaScript কি ধরনের ভাষা?
&lt;/h2&gt;

&lt;p&gt;উত্তর: JavaScript একটি scripting ভাষা, যা মূলত client-side ওয়েব ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। এটি interpreted language যার মানে এটি সরাসরি browser এ run হয়, কোনো compilation ছাড়াই।&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Variable declaration এর ক্ষেত্রে var, let, এবং const এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;var: এটি function-scoped, মানে এটি শুধুমাত্র একটি ফাংশনের ভিতরে সীমাবদ্ধ।&lt;/li&gt;
&lt;li&gt;let: এটি block-scoped, মানে এটি শুধুমাত্র {} ব্লকের ভিতরে সীমাবদ্ধ থাকে।&lt;/li&gt;
&lt;li&gt;const: এটি block-scoped, কিন্তু এর মান একবার সেট করার পর আর পরিবর্তন করা যায় না।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Closures কী এবং কীভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Closure হলো একটি ফাংশন যা তার বাহিরের scope এর ভ্যারিয়েবলগুলোকে মনে রাখে। Closure এর কারণে inner function তার parent function এর variable access করতে পারে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function outerFunction() {
  let outerVar = 'Hello';
  function innerFunction() {
    console.log(outerVar);
  }
  return innerFunction;
}

const closure = outerFunction();
closure(); // Output: Hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Hoisting কী?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Hoisting হলো একটি মেকানিজম যেখানে JavaScript variable declaration এবং function declaration কে স্বয়ংক্রিয়ভাবে স্কোপের উপরের দিকে নিয়ে যায়। কিন্তু initialization টা পরে হয়।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(x); // Output: undefined
var x = 10;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে, &lt;code&gt;x&lt;/code&gt; প্রথমে &lt;code&gt;undefined&lt;/code&gt;হিসেবে &lt;code&gt;hoist&lt;/code&gt;করা হয়েছে।&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Callback Function কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;br&gt;
Callback ফাংশন হলো এমন একটি ফাংশন যা অন্য একটি ফাংশনের argument হিসেবে পাস করা হয় এবং সেই ফাংশনের ভিতরে এক সময়ে call করা হয়।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function greet(name, callback) {
  console.log('Hello ' + name);
  callback();
}

function sayGoodbye() {
  console.log('Goodbye!');
}

greet('Alice', sayGoodbye); // Output: Hello Alice, Goodbye!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Asynchronous JavaScript কী এবং এটি কীভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Asynchronous JavaScript হলো এমন একটি মেকানিজম যেখানে কিছু কাজগুলো non-blocking ভাবে করা যায়। যেমন: setTimeout, fetch, বা AJAX কল। এটি Event Loop এর মাধ্যমে কাজ করে, যা কলব্যাকগুলিকে এক সময়ে execute করে।&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Event Bubbling এবং Event Capturing এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event Bubbling: যখন একটি ইভেন্ট ঘটে, তখন এটি প্রথমে target element এ ঘটে এবং তারপর উপরের parent elements এর দিকে চলে যায়।&lt;/li&gt;
&lt;li&gt;Event Capturing: এর উল্টো, ইভেন্টটি প্রথমে root element এ ঘটে এবং নিচের target element এ পৌঁছায়।&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  8. &lt;code&gt;this&lt;/code&gt;কী?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;this&lt;/code&gt;হলো একটি কিওয়ার্ড যা বর্তমান execution context কে নির্দেশ করে। অর্থাৎ এটি সেই অবজেক্টকে নির্দেশ করে যা বর্তমান ফাংশনকে কল করেছে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const person = {
  name: 'Alice',
  greet: function() {
    console.log('Hello, ' + this.name);
  }
}

person.greet(); // Output: Hello, Alice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  9. &lt;code&gt;==&lt;/code&gt; এবং &lt;code&gt;===&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;==&lt;/code&gt; (Loose Equality): এটি ভ্যালুগুলির মধ্যে type coercion করে এবং তারপর তাদের তুলনা করে।&lt;br&gt;
&lt;code&gt;===&lt;/code&gt; (Strict Equality): এটি ভ্যালুগুলির type এবং value উভয়ই চেক করে। যদি তারা একই না হয়, তবে এটি false রিটার্ন করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(1 == '1');  // true (type coercion হয়)
console.log(1 === '1'); // false (different types)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  10. Promises কী এবং এটি কীভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;br&gt;
Promise হলো একটি অবজেক্ট যা ভবিষ্যতে কোন একটি asynchronous operation এর সফলতা বা ব্যর্থতার প্রতিনিধিত্ব করে। Promises এর তিনটি স্টেট থাকে:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pending: অপারেশনটি চলছে।&lt;/li&gt;
&lt;li&gt;Fulfilled: অপারেশনটি সফল হয়েছে।&lt;/li&gt;
&lt;li&gt;Rejected: অপারেশনটি ব্যর্থ হয়েছে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const promise = new Promise((resolve, reject) =&amp;gt; {
  let success = true;
  if(success) {
    resolve('Operation Successful');
  } else {
    reject('Operation Failed');
  }
});

promise.then(result =&amp;gt; console.log(result))
       .catch(error =&amp;gt; console.log(error));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১১. &lt;code&gt;prototype&lt;/code&gt; এবং &lt;code&gt;__proto__&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;prototype&lt;/code&gt;: এটি একটি অবজেক্ট যা কনস্ট্রাক্টর ফাংশনের সাথে যুক্ত থাকে। এটি নতুন অবজেক্ট তৈরির সময় প্রোটোটাইপ চেইনে যুক্ত হয়।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;__proto__&lt;/code&gt;: এটি প্রতিটি অবজেক্টের অভ্যন্তরীণ প্রোপার্টি যা অবজেক্টের প্রোটোটাইপকে নির্দেশ করে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Person(name) {
  this.name = name;
}

Person.prototype.greet = function() {
  console.log('Hello, ' + this.name);
}

const alice = new Person('Alice');
alice.greet(); // Output: Hello, Alice

console.log(alice.__proto__ === Person.prototype); // true

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১২. &lt;code&gt;map&lt;/code&gt;, &lt;code&gt;filter&lt;/code&gt;, এবং &lt;code&gt;reduce&lt;/code&gt; ফাংশনের মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;map&lt;/code&gt;: এটি একটি নতুন অ্যারে তৈরি করে যেখানে প্রতিটি উপাদান একটি নির্দিষ্ট ফাংশনের মাধ্যমে পরিবর্তিত হয়।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;filter&lt;/code&gt;: এটি একটি নতুন অ্যারে তৈরি করে যা শুধুমাত্র সেই উপাদানগুলো ধারণ করে যা নির্দিষ্ট শর্ত পূরণ করে।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;reduce&lt;/code&gt;: এটি একটি একক মানে অ্যারের সমস্ত উপাদানকে রিডিউস করে, সাধারণত সমষ্টি বা গুণফল হিসাব করার জন্য ব্যবহৃত হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const numbers = [1, 2, 3, 4, 5];

// map
const doubled = numbers.map(num =&amp;gt; num * 2);
console.log(doubled); // [2, 4, 6, 8, 10]

// filter
const even = numbers.filter(num =&amp;gt; num % 2 === 0);
console.log(even); // [2, 4]

// reduce
const sum = numbers.reduce((acc, num) =&amp;gt; acc + num, 0);
console.log(sum); // 15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৩. &lt;code&gt;async&lt;/code&gt; এবং &lt;code&gt;await&lt;/code&gt; কীভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;async&lt;/code&gt; এবং &lt;code&gt;await&lt;/code&gt; হল asynchronous কোড লেখার একটি সহজ উপায়। &lt;code&gt;async&lt;/code&gt; ফাংশনকে প্রতিশ্রুতি (Promise) রিটার্ন করে এবং &lt;code&gt;await&lt;/code&gt; ব্যবহার করে সেই প্রতিশ্রুতির ফলাফল পাওয়া যায়।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function fetchData() {
  return new Promise((resolve) =&amp;gt; {
    setTimeout(() =&amp;gt; {
      resolve('Data received');
    }, 2000);
  });
}

async function getData() {
  console.log('Fetching data...');
  const data = await fetchData();
  console.log(data);
}

getData();
// Output:
// Fetching data...
// (২ সেকেন্ড পরে)
// Data received
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৪. &lt;code&gt;spread&lt;/code&gt; এবং &lt;code&gt;rest&lt;/code&gt; অপারেটরের মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;spread&lt;/code&gt; অপারেটর (&lt;code&gt;...&lt;/code&gt;): এটি একটি অ্যারের উপাদানগুলোকে পৃথক পৃথক করে, যেমন ফাংশনে আর্গুমেন্ট পাস করতে।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rest&lt;/code&gt; অপারেটর (&lt;code&gt;...&lt;/code&gt;): এটি একটি ফাংশনের আর্গুমেন্টগুলোকে একটি অ্যারে হিসেবে গ্রহণ করে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function fetchData() {
  return new Promise((resolve) =&amp;gt; {
    setTimeout(() =&amp;gt; {
      resolve('Data received');
    }, 2000);
  });
}

async function getData() {
  console.log('Fetching data...');
  const data = await fetchData();
  console.log(data);
}

getData();
// Output:
// Fetching data...
// (২ সেকেন্ড পরে)
// Data received
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৫. &lt;code&gt;debounce&lt;/code&gt; এবং &lt;code&gt;throttle&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debounce: এটি একটি ফাংশনকে একটি নির্দিষ্ট সময়ের মধ্যে একবার কল হতে বাধা দেয়, যতক্ষণ না নির্দিষ্ট সময় পেরোয়া হয়।&lt;/li&gt;
&lt;li&gt;Throttle: এটি একটি ফাংশনকে একটি নির্দিষ্ট সময়ের জন্য সীমিত করে, যাতে নির্দিষ্ট সময়ের মধ্যে একাধিক কল করা না যায়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Debounce
function debounce(func, delay) {
  let timeout;
  return function(...args) {
    clearTimeout(timeout);
    timeout = setTimeout(() =&amp;gt; func.apply(this, args), delay);
  }
}

window.addEventListener('resize', debounce(() =&amp;gt; {
  console.log('Window resized');
}, 500));

// Throttle
function throttle(func, limit) {
  let inThrottle;
  return function(...args) {
    if (!inThrottle) {
      func.apply(this, args);
      inThrottle = true;
      setTimeout(() =&amp;gt; inThrottle = false, limit);
    }
  }
}

window.addEventListener('scroll', throttle(() =&amp;gt; {
  console.log('Scrolled');
}, 1000));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৬. &lt;code&gt;bind&lt;/code&gt;, &lt;code&gt;call&lt;/code&gt;, এবং &lt;code&gt;apply&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;call&lt;/code&gt;: এটি একটি ফাংশনকে নির্দিষ্ট this কনটেক্সট সহ কল করে এবং আর্গুমেন্টগুলো আলাদা আলাদা পাস করে।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;apply&lt;/code&gt;: এটি call এর মতই কাজ করে কিন্তু আর্গুমেন্টগুলো একটি অ্যারে হিসেবে পাস করে।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bind&lt;/code&gt;: এটি একটি নতুন ফাংশন তৈরি করে যা নির্দিষ্ট this কনটেক্সট সহ কল করা যাবে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const person = {
  name: 'Alice'
};

function greet(greeting, punctuation) {
  console.log(greeting + ', ' + this.name + punctuation);
}

// call
greet.call(person, 'Hello', '!'); // Hello, Alice!

// apply
greet.apply(person, ['Hi', '!!']); // Hi, Alice!!

// bind
const greetAlice = greet.bind(person);
greetAlice('Hey', '!!!'); // Hey, Alice!!!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৭. &lt;code&gt;undefined&lt;/code&gt; এবং &lt;code&gt;null&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;undefined&lt;/code&gt;: এটি একটি ভ্যালু যা ইঙ্গিত করে যে কোনো ভেরিয়েবল ডিফাইন করা হয়েছে কিন্তু সেটি কোনো মান ধারণ করছে না।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;null&lt;/code&gt;: এটি একটি ভ্যালু যা ইঙ্গিত করে যে কোনো ভেরিয়েবল সচেতনভাবে কোনো মান নেই বলে সেট করা হয়েছে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let a;
console.log(a); // undefined

let b = null;
console.log(b); // null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৮. &lt;code&gt;localStorage&lt;/code&gt; এবং &lt;code&gt;sessionStorage&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;localStorage&lt;/code&gt;: এটি ডেটা ব্রাউজারে স্থায়ীভাবে সংরক্ষণ করে, ব্রাউজার বন্ধ হলেও ডেটা থাকবে।&lt;br&gt;
&lt;code&gt;sessionStorage&lt;/code&gt;: এটি ডেটা শুধুমাত্র ব্রাউজার সেশনের জন্য সংরক্ষণ করে, ব্রাউজার বন্ধ করলে ডেটা মুছে যাবে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// localStorage
localStorage.setItem('username', 'Alice');
console.log(localStorage.getItem('username')); // Alice

// sessionStorage
sessionStorage.setItem('token', '12345');
console.log(sessionStorage.getItem('token')); // 12345
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ১৯. &lt;code&gt;JSON.stringify&lt;/code&gt; এবং &lt;code&gt;JSON.parse&lt;/code&gt; কী?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;JSON.stringify&lt;/code&gt;: এটি একটি জাভাস্ক্রিপ্ট অবজেক্টকে JSON স্ট্রিং এ রূপান্তর করে।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;JSON.parse&lt;/code&gt;: এটি একটি JSON স্ট্রিংকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const obj = { name: 'Alice', age: 25 };

// stringify
const jsonString = JSON.stringify(obj);
console.log(jsonString); // '{"name":"Alice","age":25}'

// parse
const parsedObj = JSON.parse(jsonString);
console.log(parsedObj); // { name: 'Alice', age: 25 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২০. &lt;code&gt;strict mode&lt;/code&gt; কী এবং কেন এটি ব্যবহার করা হয়?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Strict mode হলো জাভাস্ক্রিপ্টের একটি ফিচার যা কোডের কিছু ভুল কম্পনেন্টগুলি ধরতে সাহায্য করে এবং কিছু অপ্রত্যাশিত বিহেভিয়র প্রতিরোধ করে। এটি ব্যবহার করলে কোড আরও নিরাপদ এবং ত্রুটি মুক্ত হয়।&lt;/p&gt;

&lt;p&gt;কিভাবে ব্যবহার করবেন:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;'use strict';

function myFunction() {
  // Strict mode-এ কিছু অপারেশন করতে পারবেন না যা সাধারণত পারতেন না
  // উদাহরণস্বরূপ, অপরিবর্তনীয় ভেরিয়েবল পুনরায় ডিক্লেয়ার করা
  var x = 10;
  // var x = 20; // এটি Strict mode-এ এরর দিবে
}

myFunction();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২১. &lt;code&gt;setTimeout&lt;/code&gt; এবং &lt;code&gt;setInterval&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;setTimeout&lt;/code&gt;: এটি একটি নির্দিষ্ট সময় পরে একবার একটি ফাংশন কল করে।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;setInterval&lt;/code&gt;: এটি একটি নির্দিষ্ট সময় অন্তর ফাংশনটি বারবার কল করে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// setTimeout
setTimeout(() =&amp;gt; {
  console.log('This runs once after 2 seconds');
}, 2000);

// setInterval
const intervalId = setInterval(() =&amp;gt; {
  console.log('This runs every 3 seconds');
}, 3000);

// বাতিল করতে
// clearInterval(intervalId);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২২. &lt;code&gt;new&lt;/code&gt; অপারেটর কী করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;new&lt;/code&gt; অপারেটর একটি ফাংশনকে কনস্ট্রাক্টর হিসেবে ব্যবহার করে একটি নতুন অবজেক্ট তৈরি করে। এটি প্রোটোটাইপ সেট করে, অবজেক্ট ইন্সট্যান্স তৈরি করে এবং কনস্ট্রাক্টর ফাংশনে &lt;code&gt;this&lt;/code&gt; নির্দেশ করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function Person(name) {
  this.name = name;
}

const alice = new Person('Alice');
console.log(alice.name); // Alice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৩. &lt;code&gt;bind&lt;/code&gt; মেথড কেন এবং কখন ব্যবহার করবেন?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;bind&lt;/code&gt; মেথড একটি ফাংশনের this কনটেক্সট নির্দিষ্ট করে এবং একটি নতুন ফাংশন রিটার্ন করে। এটি তখন ব্যবহার করা হয় যখন ফাংশনের this কনটেক্সট নির্দিষ্টভাবে সেট করতে হয়, যেমন ইভেন্ট হ্যান্ডলারে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const person = {
  name: 'Alice',
  greet: function() {
    console.log('Hello, ' + this.name);
  }
}

const greet = person.greet.bind(person);
greet(); // Hello, Alice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৪. &lt;code&gt;Symbol&lt;/code&gt; কী এবং কেন এটি ব্যবহার করা হয়?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;Symbol&lt;/code&gt; হল একটি প্রিমিটিভ ডেটা টাইপ যা ইউনিক এবং ইমিউটেবল। এটি অবজেক্টের প্রোপার্টি কী হিসেবে ব্যবহৃত হয় যাতে প্রোপার্টি গুলি কনফ্লিক্ট না করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const sym1 = Symbol('description');
const sym2 = Symbol('description');

console.log(sym1 === sym2); // false

const obj = {


}

console.log(obj[sym1]); // value1
console.log(obj[sym2]); // value2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৫. &lt;code&gt;Generator&lt;/code&gt; ফাংশন কী এবং কিভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;Generator&lt;/code&gt; ফাংশন একটি বিশেষ ধরনের ফাংশন যা ইটারেটর অবজেক্ট রিটার্ন করে। এটি &lt;code&gt;function&lt;/code&gt;* সিনট্যাক্স দিয়ে ঘোষণা করা হয় এবং &lt;code&gt;yield&lt;/code&gt; কিওয়ার্ড ব্যবহার করে মান রিটার্ন করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function* myGenerator() {
  yield 1;
  yield 2;
  yield 3;
}

const gen = myGenerator();

console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3
console.log(gen.next().done);  // true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৬. &lt;code&gt;ES6&lt;/code&gt; এর কিছু গুরুত্বপূর্ণ ফিচার কী কী?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;ES6&lt;/code&gt; বা &lt;code&gt;ECMAScript&lt;/code&gt; 2015 হল জাভাস্ক্রিপ্টের একটি বড় আপডেট যা অনেক নতুন ফিচার নিয়ে আসে। এর মধ্যে কিছু গুরুত্বপূর্ণ ফিচার হলো:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Let&lt;/code&gt; এবং &lt;code&gt;Const&lt;/code&gt;: ব্লক-স্কোপড ভেরিয়েবল ডিক্লেয়ারেশন।&lt;/li&gt;
&lt;li&gt;Arrow Functions: সংক্ষিপ্ত ফাংশন সিনট্যাক্স এবং &lt;code&gt;this&lt;/code&gt; বাইন্ডিং।&lt;/li&gt;
&lt;li&gt;Template Literals: স্ট্রিং ইন্টারপোলেশন।&lt;/li&gt;
&lt;li&gt;Destructuring: অবজেক্ট এবং অ্যারের মান সরাসরি ভেরিয়েবলে ডিক্লেয়ার করা।&lt;/li&gt;
&lt;li&gt;Classes: ক্লাস-বেসড অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং সাপোর্ট।&lt;/li&gt;
&lt;li&gt;Promises: অ্যাসিঙ্ক্রোনাস অপারেশন হ্যান্ডলিং।&lt;/li&gt;
&lt;li&gt;Modules: কোড মডুলারাইজেশন এবং রিইউজিবিলিটি।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Arrow Function
const add = (a, b) =&amp;gt; a + b;

// Template Literal
const name = 'Alice';
console.log(`Hello, ${name}!`);

// Destructuring
const person = { name: 'Alice', age: 25 };
const { name, age } = person;

// Classes
class Person {
  constructor(name) {
    this.name = name;
  }
  greet() {
    console.log('Hello, ' + this.name);
  }
}

const alice = new Person('Alice');
alice.greet(); // Hello, Alice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৭. &lt;code&gt;Memory Leak&lt;/code&gt; কী এবং জাভাস্ক্রিপ্টে কিভাবে এড়ানো যায়?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;Memory Leak&lt;/code&gt; হল এমন একটি অবস্থা যেখানে প্রোগ্রামটি অতিরিক্ত মেমরি ব্যবহার করে এবং সেই মেমরি মুক্ত হয় না। জাভাস্ক্রিপ্টে মেমোরি লিক এড়াতে:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;অনুপযুক্ত গ্লোবাল ভেরিয়েবল এড়িয়ে চলা।&lt;/li&gt;
&lt;li&gt;ইভেন্ট লিসেনারগুলো রিমুভ করা যখন আর প্রয়োজন না।&lt;/li&gt;
&lt;li&gt;অবজেক্ট রেফারেন্সগুলো মুক্ত করা যখন আর প্রয়োজন না।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// মেমোরি লিক উদাহরণ
function createLeak() {
  const element = document.getElementById('myElement');
  window.myLeak = element; // গ্লোবাল ভেরিয়েবলে রেফারেন্স রাখা
}

// এড়ানোর উপায়
function preventLeak() {
  const element = document.getElementById('myElement');
  // প্রয়োজন না হলে রেফারেন্স মুক্ত করা
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৮. &lt;code&gt;DOM&lt;/code&gt; এবং &lt;code&gt;BOM&lt;/code&gt; এর মধ্যে পার্থক্য কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;DOM&lt;/code&gt; (Document Object Model): এটি একটি API যা ওয়েব পেজের HTML বা XML ডকুমেন্টকে অবজেক্ট হিসেবে মডেল করে, যা জাভাস্ক্রিপ্ট দিয়ে ম্যানিপুলেট করা যায়।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;BOM&lt;/code&gt; (Browser Object Model): এটি ব্রাউজারের নিজস্ব অবজেক্ট এবং মেথডের সংগ্রহ যা ব্রাউজার উইন্ডো এবং এর প্রোপার্টি নিয়ন্ত্রণ করে, যেমন &lt;code&gt;window&lt;/code&gt;, &lt;code&gt;navigator&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt; ইত্যাদি।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// DOM - একটি এলিমেন্ট নির্বাচন এবং ম্যানিপুলেট করা
const title = document.getElementById('title');
title.textContent = 'New Title';

// BOM - ব্রাউজার উইন্ডো নিয়ন্ত্রণ করা
console.log(window.innerWidth);
window.alert('Hello!');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ২৯. &lt;code&gt;Event Delegation&lt;/code&gt; কী এবং কেন এটি ব্যবহার করা হয়?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Event Delegation হল এমন একটি টেকনিক যেখানে একটি প্যারেন্ট এলিমেন্টে ইভেন্ট লিসেনার বসানো হয় এবং চাইল্ড এলিমেন্টের ইভেন্টগুলোকে হ্যান্ডেল করা হয়। এটি পারফরম্যান্স উন্নত করে এবং ডাইনামিক এলিমেন্টের ইভেন্ট হ্যান্ডলিং সহজ করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// HTML
/*
&amp;lt;ul id="parentList"&amp;gt;
  &amp;lt;li&amp;gt;Item 1&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Item 2&amp;lt;/li&amp;gt;
  &amp;lt;li&amp;gt;Item 3&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
*/

// JavaScript
const parentList = document.getElementById('parentList');

parentList.addEventListener('click', function(event) {
  if(event.target &amp;amp;&amp;amp; event.target.nodeName === 'LI') {
    console.log('List item clicked:', event.target.textContent);
  }
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩০. &lt;code&gt;Shadow DOM&lt;/code&gt; কী এবং কেন এটি গুরুত্বপূর্ণ?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;Shadow DOM&lt;/code&gt; হল ওয়েব কম্পোনেন্টের একটি অংশ যা একটি পৃথক, ইনক্যাপসুলেটেড DOM রুট তৈরি করে। এটি স্টাইল এবং স্ক্রিপ্টের আইসোলেশন নিশ্চিত করে, যাতে বাইরের কোডের সাথে কনফ্লিক্ট না হয়।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const host = document.getElementById('shadowHost');
const shadowRoot = host.attachShadow({ mode: 'open' });

shadowRoot.innerHTML = `
  &amp;lt;style&amp;gt;
    p { color: blue; }
  &amp;lt;/style&amp;gt;
  &amp;lt;p&amp;gt;This is inside Shadow DOM&amp;lt;/p&amp;gt;
`;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;৩১. &lt;code&gt;Immutable&lt;/code&gt; এবং &lt;code&gt;Mutable&lt;/code&gt; অবজেক্টের মধ্যে পার্থক্য কি?&lt;br&gt;
উত্তর:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;Immutable&lt;/code&gt;: এগুলো এমন অবজেক্ট যা একবার তৈরি হলে পরিবর্তন করা যায় না। পরিবর্তন করলে নতুন অবজেক্ট তৈরি হয়।&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Mutable&lt;/code&gt;: এগুলো এমন অবজেক্ট যা তাদের প্রোপার্টি পরিবর্তন করা যায়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Mutable
const obj = { name: 'Alice' };
obj.name = 'Bob'; // পরিবর্তন করা যায়

// Immutable (using Object.freeze)
const immutableObj = Object.freeze({ name: 'Alice' });
immutableObj.name = 'Bob'; // পরিবর্তন হবে না
console.log(immutableObj.name); // Alice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩২. &lt;code&gt;Destructuring&lt;/code&gt; কি এবং কিভাবে এটি কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: &lt;code&gt;Destructuring&lt;/code&gt; হল জাভাস্ক্রিপ্টের একটি সিনট্যাক্স যা অবজেক্ট বা অ্যারের মানগুলোকে সরাসরি ভেরিয়েবলে আলাদা করে নিয়ে আসে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Array Destructuring
const numbers = [1, 2, 3];
const [a, b, c] = numbers;
console.log(a, b, c); // 1 2 3

// Object Destructuring
const person = { name: 'Alice', age: 25 };
const { name, age } = person;
console.log(name, age); // Alice 25
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩৩. &lt;code&gt;Immutable Data Structures&lt;/code&gt; কী এবং কেন এটি গুরুত্বপূর্ণ?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Immutable Data Structures হল এমন ডেটা স্ট্রাকচার যা একবার তৈরি হলে পরিবর্তন করা যায় না। এটি ডেটা ফ্লোকে সহজ করে এবং বাগ কমাতে সাহায্য করে, বিশেষ করে রিয়েক্টের মতো লাইব্রেরিতে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const original = { name: 'Alice', age: 25 };

// Immutable update
const updated = { ...original, age: 26 };
console.log(original.age); // 25
console.log(updated.age);  // 26
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩৪. &lt;code&gt;CORS (Cross-Origin Resource Sharing)&lt;/code&gt; কী এবং এটি কিভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: CORS হল একটি সিকিউরিটি ফিচার যা ওয়েব ব্রাউজারকে এক ডোমেইন থেকে অন্য ডোমেইনের রিসোর্সে অ্যাক্সেস নিয়ন্ত্রণ করতে দেয়। সার্ভার সঠিক হেডার পাঠিয়ে CORS নিয়ন্ত্রণ করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Access-Control-Allow-Origin: https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এই হেডারটি ব্রাউজারকে বলে যে &lt;code&gt;https://example.com&lt;/code&gt; থেকে আসা রিকোয়েস্টগুলোকে অনুমতি দেওয়া হয়েছে।&lt;/p&gt;

&lt;h2&gt;
  
  
  ৩৫. &lt;code&gt;Service Workers&lt;/code&gt; কী এবং কেন এটি ব্যবহৃত হয়?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Service Workers হল জাভাস্ক্রিপ্ট স্ক্রিপ্ট যা ব্যাকগ্রাউন্ডে রান করে, নেটওয়ার্ক রিকোয়েস্ট ক্যাচ করে এবং অফলাইন অভিজ্ঞতা প্রদান করে। এটি PWA (Progressive Web Apps) তৈরিতে ব্যবহৃত হয়।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// service-worker.js
self.addEventListener('install', event =&amp;gt; {
  console.log('Service Worker installing.');
});

self.addEventListener('fetch', event =&amp;gt; {
  event.respondWith(
    caches.match(event.request)
      .then(response =&amp;gt; response || fetch(event.request))
  );
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩৬. &lt;code&gt;WebAssembly&lt;/code&gt; কী এবং জাভাস্ক্রিপ্টের সাথে এর সম্পর্ক কি?
&lt;/h2&gt;

&lt;p&gt;উত্তর: WebAssembly (Wasm) হল একটি বাইনারি ইন্সট্রাকশন ফরম্যাট যা ব্রাউজারে উচ্চ কর্মক্ষমতার কোড চালানোর জন্য ডিজাইন করা হয়েছে। এটি জাভাস্ক্রিপ্টের সাথে কমপ্লিমেন্টারি হিসেবে কাজ করে, যেখানে জাভাস্ক্রিপ্ট হাই-লেভেল লজিক হ্যান্ডেল করে এবং ওয়াসম হাই-পারফরম্যান্স কাজগুলিকে দ্রুত সম্পাদন করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// জাভাস্ক্রিপ্ট থেকে WebAssembly মডিউল লোড করা
fetch('module.wasm')
  .then(response =&amp;gt; response.arrayBuffer())
  .then(bytes =&amp;gt; WebAssembly.instantiate(bytes))
  .then(results =&amp;gt; {
    const instance = results.instance;
    console.log(instance.exports.exportedFunction());
  });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩৭. &lt;code&gt;Memoization&lt;/code&gt; কী এবং এটি কিভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Memoization হল একটি অপ্টিমাইজেশন টেকনিক যেখানে ফাংশনের পূর্বের ফলাফলগুলো ক্যাশে করে রাখা হয় যাতে একই ইনপুটের জন্য পুনরায় গণনা না করতে হয়। এটি পারফরম্যান্স বাড়ায়, বিশেষ করে ভারী ফাংশনের ক্ষেত্রে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function memoize(fn) {
  const cache = {};
  return function(...args) {
    const key = JSON.stringify(args);
    if(cache[key]) {
      return cache[key];
    } else {
      const result = fn(...args);
      cache[key] = result;
      return result;
    }
  }
}

const slowFunction = (num) =&amp;gt; {
  // ভারী কাজের সিমুলেশন
  for(let i = 0; i &amp;lt; 1e9; i++) {}
  return num * 2;
}

const fastFunction = memoize(slowFunction);

console.log(fastFunction(10)); // প্রথমবার: সময় সাপেক্ষ
console.log(fastFunction(10)); // দ্বিতীয়বার: ক্যাশ থেকে তাড়াতাড়ি
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩৮. &lt;code&gt;Tail Call Optimization&lt;/code&gt; কী?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Tail Call Optimization (TCO) হল একটি অপ্টিমাইজেশন যেখানে রিকার্সিভ ফাংশনের শেষ কলটি অপ্টিমাইজ করে স্ট্যাক ওভারফ্লো প্রতিরোধ করা হয়। এটি শুধুমাত্র কিছু ভাষায় এবং ইঞ্জিনে সমর্থিত।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function factorial(n, acc = 1) {
  if(n &amp;lt;= 1) return acc;
  return factorial(n - 1, n * acc); // Tail call
}

console.log(factorial(5)); // 120
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৩৯. &lt;code&gt;Event Loop&lt;/code&gt; কী এবং এটি কীভাবে কাজ করে?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Event Loop হল জাভাস্ক্রিপ্টের একটি মেকানিজম যা সিঙ্গেল থ্রেডেড ভাষার মধ্যে অ্যাসিঙ্ক্রোনাস অপারেশন হ্যান্ডল করে। এটি কলব্যাক কিউ এবং মাইক্রোটাস্ক কিউয়ের মাধ্যমে কাজ করে, এবং স্ট্যাক ফ্রি হলে কলব্যাকগুলো এক্সিকিউট করে।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log('Start');

setTimeout(() =&amp;gt; {
  console.log('Timeout');
}, 0);

Promise.resolve().then(() =&amp;gt; {
  console.log('Promise');
});

console.log('End');

// Output:
// Start
// End
// Promise
// Timeout
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৪০. &lt;code&gt;Immutable.js&lt;/code&gt; কী এবং কেন এটি ব্যবহৃত হয়?
&lt;/h2&gt;

&lt;p&gt;উত্তর: Immutable.js হল একটি লাইব্রেরি যা ইমিউটেবল ডেটা স্ট্রাকচার প্রদান করে, যেমন ইমিউটেবল লিস্ট, ম্যাপ, সেট ইত্যাদি। এটি ডেটা ম্যানিপুলেশনে নিরাপত্তা এবং পারফরম্যান্স বৃদ্ধি করে, বিশেষ করে রিয়েক্টের সাথে ব্যবহৃত হয়।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { Map } = require('immutable');

const original = Map({ name: 'Alice', age: 25 });
const updated = original.set('age', 26);

console.log(original.get('age')); // 25
console.log(updated.get('age'));  // 26
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৪১. Higher-Order Functions কী? উদাহরণ সহ ব্যাখ্যা করুন।
&lt;/h2&gt;

&lt;p&gt;উত্তর: Higher-Order Functions হল সেই ধরনের ফাংশন যা অন্য ফাংশনকে আর্গুমেন্ট হিসেবে গ্রহণ করে অথবা ফাংশনকে রিটার্ন করে। এটি ফাংশনাল প্রোগ্রামিং এর একটি গুরুত্বপূর্ণ ধারণা।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Map
const map = new Map();
const obj = {};
map.set(obj, 'value');
console.log(map.get(obj)); // 'value'

// WeakMap
const weakMap = new WeakMap();
weakMap.set(obj, 'value');
console.log(weakMap.get(obj)); // 'value'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ৪২. &lt;code&gt;State Management&lt;/code&gt; কী এবং কেন এটি গুরুত্বপূর্ণ?
&lt;/h2&gt;

&lt;p&gt;উত্তর: State Management হল অ্যাপ্লিকেশনের স্টেট (ডেটা) পরিচালনার পদ্ধতি। এটি গুরুত্বপূর্ণ কারণ বড় অ্যাপ্লিকেশনগুলিতে বিভিন্ন কম্পোনেন্টের মধ্যে স্টেট শেয়ার এবং ম্যানেজ করা কঠিন হতে পারে।&lt;/p&gt;

&lt;p&gt;কেন গুরুত্বপূর্ণ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;সহজ স্টেট ট্র্যাকিং: স্টেট পরিবর্তনগুলো সহজে ট্র্যাক করা যায়।&lt;/li&gt;
&lt;li&gt;কম্পোনেন্টের মধ্যে ডেটা শেয়ারিং: বিভিন্ন কম্পোনেন্টের মধ্যে ডেটা সহজে শেয়ার করা যায়।&lt;/li&gt;
&lt;li&gt;Predictable State Updates: স্টেট আপডেটগুলো পূর্বানুমানযোগ্য হয়।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;উদাহরণ: React এর ক্ষেত্রে Redux ব্যবহার:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Action
const increment = () =&amp;gt; ({ type: 'INCREMENT' });

// Reducer
function counter(state = 0, action) {
  switch(action.type) {
    case 'INCREMENT':
      return state + 1;
    default:
      return state;
  }
}

// Store
import { createStore } from 'redux';
const store = createStore(counter);

// Subscribe
store.subscribe(() =&amp;gt; console.log(store.getState()));

// Dispatch
store.dispatch(increment()); // 1
store.dispatch(increment()); // 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Tracking Order Status in Node.js: A Deep Dive</title>
      <dc:creator>Md. Ranju</dc:creator>
      <pubDate>Fri, 21 Jun 2024 16:30:18 +0000</pubDate>
      <link>https://dev.to/muhammadranju/tracking-order-status-in-nodejs-a-deep-dive-4f21</link>
      <guid>https://dev.to/muhammadranju/tracking-order-status-in-nodejs-a-deep-dive-4f21</guid>
      <description>&lt;p&gt;**_In the dynamic world of e-commerce, tracking the status of an order is crucial for both businesses and customers. An effective tracking system ensures transparency and enhances the customer experience. In this article, we will explore a Node.js Express controller designed to handle order tracking. The controller fetches order details based on a tracking number and returns a status-specific response.&lt;/p&gt;

&lt;p&gt;_**&lt;br&gt;
**&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction to the Code
&lt;/h3&gt;

&lt;p&gt;This Node.js codebase is a part of an Express application. It is designed to fetch an order's status from a database and return a corresponding message. The code uses asynchronous operations to handle database queries and HTTP responses efficiently.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Key Components&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Imports and Constants
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const asyncHandler = require("../../../../../utils/asyncHandler");
const Orders = require("../../../../../models/Orders.model");
const ApiResponse = require("../../../../../utils/ApiResponse");
const OrderStatusEnum = require("../../../../../Constants");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;asyncHandler: A utility to manage asynchronous functions and error handling.&lt;/li&gt;
&lt;li&gt;Orders: The Mongoose model for accessing order data.&lt;/li&gt;
&lt;li&gt;ApiResponse: A utility to create standardized API responses.&lt;/li&gt;
&lt;li&gt;OrderStatusEnum: An object containing various order status constants.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Controller Definition
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const orderTrackingController = asyncHandler(async (req, res) =&amp;gt; {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The controller function, orderTrackingController, is wrapped in asyncHandler to handle asynchronous operations gracefully.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extracting Tracking Number
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const { trackingNumber } = req.body;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This line extracts the trackingNumber from the request body, which is needed to fetch the order details.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetching Order
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const order = await Orders.findOne({ trackingNumber: trackingNumber }).populate("shippingAddressId");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This query fetches the order matching the provided tracking number and populates the shippingAddressId field with related data.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Handling Order Not Found
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (!order) {
    return res.status(404).json(new ApiResponse(404, null, "Order not found"));
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If no order is found, the controller returns a 404 response with an appropriate message.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating Response Function
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const createResponse = (heading, body) =&amp;gt; new ApiResponse(200, { heading, body });
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Determining the Response Based on Order Status
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch (order.orderStatus) {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The switch statement checks the orderStatus and constructs a response based on its value.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Order Status: Pending
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  case OrderStatusEnum.PENDING:
      response = createResponse(
          "Processed and Ready to Ship",
          "Your package has been processed and will be with our delivery partner soon."
      );
      break;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Order Status: Cancelled
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  javascriptCopy codecase OrderStatusEnum.CANCELLED:
      response = createResponse(
          "Your Order has been cancelled",
          "Your order has been cancelled due to some reasons."
      );
      break;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Order Status: Placed
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  javascriptCopy codecase OrderStatusEnum.PLACED:
      response = createResponse(
          "Reached our Logistics Facility",
          "Your package has arrived at our logistics facility from where it will be sent to the last mile hub."
      );
      break;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Order Status: Shipped
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  javascriptCopy codecase OrderStatusEnum.SHIPPED:
      response = createResponse(
          "Shipped",
          `Your package is on the way to our last hub with tracking number ${order.trackingNumber} from where it will be delivered to you.`
      );
      break;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Order Status: Out for Delivery
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  javascriptCopy codecase OrderStatusEnum.OUT_FOR_DELIVERY:
      response = createResponse(
          "Out for Delivery",
          `Our delivery partner will attempt to deliver your package today to ${order.shippingAddressId?.city}.`
      );
      break;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Order Status: Delivered&lt;br&gt;
&lt;code&gt;javascriptCopy codecase OrderStatusEnum.DELIVERED:&lt;br&gt;
  response = createResponse(&lt;br&gt;
      "Delivered",&lt;br&gt;
&lt;/code&gt;Your package has been delivered to ${order.shippingAddressId?.city}.&lt;code&gt;&lt;br&gt;
  );&lt;br&gt;
  break;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Default Case&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  javascriptCopy codedefault:
      response = new ApiResponse(200, order, "Order status found successfully");
      break;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Sending Response to Client
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        return res.status(200).json(response);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This line sends the constructed response back to the client.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Exporting the Controller
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  module.exports = orderTrackingController;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This Node.js Express controller is a robust solution for tracking order statuses. By using asynchronous operations and clear, status-specific messages, it enhances the user experience and ensures efficient order tracking. Whether an order is pending, shipped, or delivered, this controller provides precise updates, keeping customers informed throughout the delivery process. This approach not only improves transparency but also builds trust with customers, making it an essential component of any e-commerce application.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>node</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
