DEV Community

Cover image for Pointer in JavaScript
bappasaha
bappasaha

Posted on • Edited on

Pointer in JavaScript

Code :

//todo: 1. withot using pointer

let n1 = 5;
let n2 = n1;

console.log("n1=", n1, " and n2=", n2);
n1 = 100;
console.log("n1=", n1, " and n2=", n2); 

//output
//n1= 5  and n2= 5
//n1= 100  and n2= 5

------------------------------------

//todo: 2. using pointer{object}
 /* 
 obj1 ↘️ 
       {value:11}
 obj2 ↗️ 

 */
let obj1 = {
  value: 11,     // obj1 -> {value:11}
};

let obj2 =obj1;   
console.log(obj1.value, obj2.value);  // 11 11
obj1.value =22;
console.log(obj1.value, obj2.value);  // 22 22

Enter fullscreen mode Exit fullscreen mode

Pointer:

In javascript we implement this using object

Pointer;

পয়েন্টার সম্পর্কে

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

পয়েন্টার ছাড়া ভেরিয়েবল

আসুন প্রথমে এমন একটি উদাহরণ দেখি যা পয়েন্টার ব্যবহার করে না:

let numOne = 5; // numOne ভেরিয়েবল তৈরি করুন এবং 5 মান দিন
let numTwo = numOne; // numTwo ভেরিয়েবল তৈরি করুন এবং numOne এর মান দিন
Enter fullscreen mode Exit fullscreen mode

পয়েন্টার ছাড়া ভেরিয়েবলের আচরণ

যখন আমরা উপরের কোডটি চালাই, তখন দেখা যায়:

  • numOne এর মান 5।
  • numTwo এরও মান 5।

এখন, যদি আমরা numOne পরিবর্তন করি:

numOne = 10; // numOne এর মান 10 এ পরিবর্তন করুন
Enter fullscreen mode Exit fullscreen mode
  • এখন, numOne এর মান 10, কিন্তু numTwo এখনও 5।

এটি ঘটে কারণ যখন আমরা numTwo কে numOne এর সমান করি, তখন এটি সেই মুহূর্তে মানটি কপি করে। numOne পরিবর্তিত হলে numTwo প্রভাবিত হয় না।

পয়েন্টার সহ ভেরিয়েবল

এখন, আসুন দেখি কীভাবে পয়েন্টারগুলি অবজেক্টগুলির সাথে কাজ করে:

let objectOne = { value: 11 }; // একটি অবজেক্ট তৈরি করুন এবং objectOne এ অ্যাসাইন করুন
let objectTwo = objectOne; // objectTwo কে objectOne এর সমান করুন
Enter fullscreen mode Exit fullscreen mode

পয়েন্টার সহ ভেরিয়েবলের আচরণ

যখন আমরা এই কোডটি চালাই:

  • objectOne এবং objectTwo উভয়ই একই অবজেক্টের দিকে নির্দেশ করে।

যদি আমরা অবজেক্টটির মান পরিবর্তন করি:

objectOne.value = 22; // objectOne দ্বারা নির্দেশিত অবজেক্টের মান পরিবর্তন করুন
Enter fullscreen mode Exit fullscreen mode
  • এখন objectOne.value এবং objectTwo.value উভয়ই 22।

পয়েন্টার স্থানান্তর

আমরা একটি অবজেক্টের দিকে নির্দেশক স্থানান্তর করতে পারি:

let objectThree = { value: 33 }; // আরেকটি অবজেক্ট তৈরি করুন
objectTwo = objectThree; // এখন, objectTwo objectThree এর দিকে নির্দেশ করবে
Enter fullscreen mode Exit fullscreen mode

এখন:

  • objectTwo একটি ভিন্ন অবজেক্ট (objectThree) এর দিকে নির্দেশ করছে, যখন objectOne এখনও মূল অবজেক্টের দিকে নির্দেশ করছে যার মান 22।

মেমরি ব্যবস্থাপনা এবং গার্বেজ কালেকশন

যদি একটি অবজেক্টকে আর কোনও ভেরিয়েবল দ্বারা নির্দেশিত না হয়, তবে এটি অপ্রাপ্য হয়ে যায়। উদাহরণস্বরূপ:

let unusedObject = { value: 44 }; // একটি অপ্রয়োজনীয় অবজেক্ট তৈরি করুন
unusedObject = null; // এখন এটি আর কোনও ভেরিয়েবল দ্বারা নির্দেশিত নয়
Enter fullscreen mode Exit fullscreen mode

এখন, যেহেতু কোনও ভেরিয়েবল এই অবজেক্টকে নির্দেশ করছে না, এটি মেমরিতে স্থান দখল করছে কিন্তু ব্যবহৃত হচ্ছে না।

JavaScript সময়ে সময়ে এই ধরনের জিনিস পরিষ্কার করবে একটি প্রক্রিয়া দ্বারা যা গার্বেজ কালেকশন নামে পরিচিত।

উপসংহার

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

Top comments (0)