কম্পিউটার

জাভাস্ক্রিপ্টে গ্লোবাল নেমস্পেস দূষণ কি?


গ্লোবাল নেমস্পেস দূষণ

গ্লোবাল নেমস্পেস দূষিত করার ফলে নামের সংঘর্ষ হয় . এই নাম সংঘর্ষ বড় প্রজেক্টে খুব সাধারণ যেখানে আমরা হয়তো বেশ কিছু javascript ব্যবহার করছি লাইব্রেরি চলুন বিস্তারিত আলোচনা করা যাক কি একটি নাম সংঘর্ষ হয়৷

চলুন একটি দৃশ্য ধরা যাক যেখানে A1 এবং A2 নামের 2 টি দল একটি প্রকল্পে কাজ করছে। তারা উভয়েই তাদের নিজস্ব জাভাস্ক্রিপ্ট ফাইল প্রস্তুত করেছে যা হল TeamA1.js এবং TeamA2.js নীচে দেখানো হিসাবে।

TeamA1.js

TeamA1 একটি স্টুডেন্ট ফাংশন তৈরি করেছে এবং 2 প্যারামিটার আছে fname এবং lname(firstname &lastname)।

function student(fname, lname){
   this.fname = fname;
   this.lname = lname;
   this.getFullName = function (){
      return this.fname + " " + this.lname
   }
}

TeamA2.js

TeamA2 একই ফাংশন (ছাত্র) তৈরি করেছে এবং 3টি প্যারামিটার আছে fname, mname, lname।

function student(fname, mname, lname){
   this.fname = fname;
   this.mname = mname;
   this.lname = lname;
  this.getFullName = function (){
      return this.fname + " " + this.mname + " " + this.lname;
   }
}

এখন উপরের js ফাইলগুলি পরিচালনা করার জন্য একটি html ফাইল তৈরি করুন। js ফাইলগুলিকে ট্যাগ

-এ রাখুন

Html ফাইল

<html>
<head>
<script type = "javascript" src = "TeamA1.js"></script>
<script type = "javascript" src = "TeamA2.js"></script>
</head>
<body>
   <div id = "resultDiv"></div>
   <script>
      document.getElementById("resultDiv").innerHTML =
      new student("Rajendra", "prasad").getFullName();
   </script>
</body>
</html>

যদি আমরা কোডটি চালাই তাহলে নিম্নলিখিত আউটপুটটি প্রদর্শিত হবে।

আউটপুট

Rajendra prasad undefined

ব্যাখ্যা

আমাদের এখানে দুটি স্টুডেন্ট ফাংশন রয়েছে একটি 2 প্যারামিটার সহ এবং অন্যটি 3 প্যারামিটার সহ। আমাদের লক্ষ্য হল 2টি প্যারামিটার সহ স্টুডেন্ট ফাংশন ব্যবহার করা, তাই html ফাইলে মাত্র দুটি প্যারামিটার ("রাজেন্দ্র", "প্রসাদ") পাস হয়েছে৷ কিন্তু আমরা যে আউটপুটটি পেয়েছি তা হল "রাজেন্দ্র প্রসাদ অনির্ধারিত", যার মানে কোডটি 2 প্যারামিটার সহ ফাংশনের পরিবর্তে 3 প্যারামিটার সহ একটি ফাংশন নিয়েছে।

এর পেছনের কারণ হল জাভাস্ক্রিপ্ট ফাংশন ওভারলোডিংকে উৎসাহিত করবে না . এটা শুধু ওভাররাইড করে একই নামের অন্য ফাংশন সহ ফাংশন (এখানে এটি ছাত্র)। আমাদের উদাহরণে যেহেতু 3 প্যারামিটার (TeamA2.js) সহ ফাংশনটি 2 প্যারামিটার (TeamA1.js), TeamA2 সহ ফাংশনের পরে স্থাপন করা হয়েছে ফাংশন TeamA1কে ওভাররাইড করেছে ফাংশন, অনির্ধারিত প্রদর্শন করছে আউটপুটে যদি দুটি js ফাইলের স্থানগুলি তাদের নিজ নিজ জায়গায় বিপরীত করে থাকে তবে আউটপুট হবে "রাজেন্দ্র প্রসাদ"।

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


  1. জাভাস্ক্রিপ্টে একটি বেনামী ফাংশন কি?

  2. জাভাস্ক্রিপ্টে ফাংশন এক্সপ্রেশন কি?

  3. জাভাস্ক্রিপ্টে বন্ধ কি?

  4. পাইথনে একটি নামস্থান কি?