$lang['tuto'] = "টিউটোরিয়াল"; ?> জাভাস্ক্রিপ্টে

জাভাস্ক্রিপ্টে অনির্ধারিত অবজেক্ট প্রপার্টি পরীক্ষা করা হচ্ছে

জাভাস্ক্রিপ্টে অনির্ধারিত অবজেক্ট প্রপার্টি পরীক্ষা করা হচ্ছে
জাভাস্ক্রিপ্টে অনির্ধারিত অবজেক্ট প্রপার্টি পরীক্ষা করা হচ্ছে

জাভাস্ক্রিপ্টে অনির্ধারিত বৈশিষ্ট্য বোঝা

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

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

আদেশ বর্ণনা
in একটি বস্তুর মধ্যে একটি সম্পত্তি বিদ্যমান কিনা তা পরীক্ষা করে, সেটির অনির্ধারিত বা একটি মান আছে কিনা তা নির্বিশেষে।
hasOwnProperty একটি বস্তুর নিজস্ব সম্পত্তি হিসাবে একটি নির্দিষ্ট সম্পত্তি আছে কিনা তা নির্ধারণ করে, প্রোটোটাইপ চেইনের মাধ্যমে উত্তরাধিকারসূত্রে পাওয়া যায় না।
=== undefined অবজেক্টে সম্পত্তি সংজ্ঞায়িত করা হয়নি কিনা তা পরীক্ষা করতে একটি সম্পত্তি মানকে অনির্ধারিত এর সাথে তুলনা করে।
interface প্রয়োজনীয় এবং ঐচ্ছিক বৈশিষ্ট্য উল্লেখ করে টাইপস্ক্রিপ্টে একটি বস্তুর গঠন সংজ্ঞায়িত করে।
optional chaining (?.) নেস্টেড অবজেক্টের বৈশিষ্ট্যগুলিতে নিরাপদ অ্যাক্সেসের অনুমতি দেয় যা কোনও ত্রুটি না ঘটিয়ে অনির্ধারিত হতে পারে৷
http.createServer ক্লায়েন্ট অনুরোধ এবং প্রতিক্রিয়া পরিচালনা করতে Node.js-এ একটি HTTP সার্ভারের একটি নতুন উদাহরণ তৈরি করে।
writeHead HTTP প্রতিক্রিয়ার স্ট্যাটাস কোড এবং হেডার সেট করে।
res.end প্রতিক্রিয়া সম্পূর্ণ হওয়ার সংকেত দেয় এবং ক্লায়েন্টকে প্রতিক্রিয়া পাঠায়।

স্ক্রিপ্ট কার্যকারিতা ব্যাপক ব্যাখ্যা

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

দ্বিতীয় স্ক্রিপ্টটি Node.js ব্যবহার করে সার্ভার-সাইড পদ্ধতিতে স্থানান্তরিত হয়। এটি দিয়ে একটি সাধারণ HTTP সার্ভার তৈরি করে http.createServer এবং পোর্ট 3000 এ শোনে। সার্ভার ইনকামিং রিকোয়েস্টগুলি পরিচালনা করে এবং JSON ডেটা দিয়ে সাড়া দেয়। বস্তু user এর অস্তিত্বের জন্য পরীক্ষা করা হয় phone সম্পত্তি ব্যবহার করে hasOwnProperty, একটি পদ্ধতি যা নিশ্চিত করে যে সম্পত্তিটি বস্তুর সরাসরি সদস্য এবং উত্তরাধিকারসূত্রে প্রাপ্ত নয়। সম্পত্তি বিদ্যমান কিনা তার উপর নির্ভর করে, সার্ভার ক্লায়েন্টের কাছে একটি উপযুক্ত বার্তা পাঠায়। এটি প্রদর্শন করে যে কীভাবে একটি সার্ভার পরিবেশে অনির্ধারিত বৈশিষ্ট্যগুলি পরিচালনা করতে হয়, ব্যাকএন্ড বিকাশে শক্তিশালী বৈধতা প্রদান করে।

চূড়ান্ত স্ক্রিপ্ট একটি ব্যবহার করে ঐচ্ছিক বৈশিষ্ট্য সহ একটি বস্তুকে সংজ্ঞায়িত করতে TypeScript ব্যবহার করে interface. দ্য Car ইন্টারফেসের রূপরেখা প্রয়োজনীয় এবং ঐচ্ছিক বৈশিষ্ট্য সহ year. স্ক্রিপ্ট তারপর চেক যদি year এর সাথে ঐচ্ছিক চেইনিং ব্যবহার করে সম্পত্তি অনির্ধারিত ?.. এই সিনট্যাক্সটি রানটাইম ত্রুটি সৃষ্টি না করে সম্ভাব্য অনির্ধারিত বৈশিষ্ট্যগুলিতে নিরাপদ অ্যাক্সেসের অনুমতি দেয়, কোডটি দক্ষ এবং নিরাপদ উভয়ই নিশ্চিত করে। যদি year সম্পত্তি অনির্ধারিত, একটি বার্তা কনসোলে লগ করা হয়েছে। এই পদ্ধতিটি টাইপ সেফটি এবং স্ট্রাকচার্ড অবজেক্ট ডেফিনিশনের জন্য TypeScript এর ক্ষমতা হাইলাইট করে, কোড নির্ভরযোগ্যতা বাড়ায়।

জাভাস্ক্রিপ্ট ব্যবহার করে অনির্ধারিত বৈশিষ্ট্য সনাক্ত করা

ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট

// Sample object
const person = {
  name: "Alice",
  age: 30,
};

// Method 1: Using 'in' operator
if ("address" in person) {
  console.log("Address exists in person object.");
} else {
  console.log("Address is undefined in person object.");
}

// Method 2: Using 'undefined' comparison
if (person.address === undefined) {
  console.log("Address is undefined in person object.");
} else {
  console.log("Address exists in person object.");
}

সার্ভারে অনির্ধারিত বৈশিষ্ট্য পরীক্ষা করা হচ্ছে

Node.js

const http = require("http");

http.createServer((req, res) => {
  res.writeHead(200, { "Content-Type": "application/json" });
  const user = {
    username: "bob",
    email: "bob@example.com",
  };

  // Method 3: Using 'hasOwnProperty'
  if (user.hasOwnProperty("phone")) {
    res.end(JSON.stringify({ message: "Phone number exists." }));
  } else {
    res.end(JSON.stringify({ message: "Phone number is undefined." }));
  }

}).listen(3000, () => {
  console.log("Server running at http://localhost:3000/");
});

টাইপস্ক্রিপ্টে অনির্ধারিত বৈশিষ্ট্যের বৈধতা

টাইপস্ক্রিপ্ট

interface Car {
  make: string;
  model: string;
  year?: number;
}

const car: Car = {
  make: "Toyota",
  model: "Corolla",
};

// Method 4: Optional chaining
if (car.year === undefined) {
  console.log("Year is undefined in car object.");
} else {
  console.log("Year exists in car object.");
}

জাভাস্ক্রিপ্টে অনির্ধারিত বৈশিষ্ট্য পরীক্ষা করার জন্য আরও কৌশল

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

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

অনির্ধারিত বৈশিষ্ট্য সনাক্তকরণে সাধারণ প্রশ্ন এবং সমাধান

  1. জাভাস্ক্রিপ্টে একটি অনির্ধারিত সম্পত্তি পরীক্ষা করার সবচেয়ে নির্ভরযোগ্য উপায় কি?
  2. সবচেয়ে নির্ভরযোগ্য পদ্ধতি ব্যবহার করা হয় hasOwnProperty পদ্ধতি, কারণ এটি প্রোটোটাইপ চেইন অতিক্রম না করে সরাসরি বস্তুতে সম্পত্তি পরীক্ষা করে।
  3. আমি ব্যবহার করতে পারি in অপারেটর অনির্ধারিত বৈশিষ্ট্য পরীক্ষা করতে?
  4. হ্যাঁ in অপারেটর প্রোটোটাইপ চেইনের বৈশিষ্ট্য সহ বস্তুতে একটি সম্পত্তি বিদ্যমান কিনা তা পরীক্ষা করে, কিন্তু মানটি অনির্ধারিত কিনা তা যাচাই করে না।
  5. কিভাবে ঐচ্ছিক চেইনিং অনির্ধারিত বৈশিষ্ট্য সনাক্ত করতে সাহায্য করে?
  6. ঐচ্ছিক চেইনিং (?.) যদি একটি মধ্যবর্তী সম্পত্তি অনির্ধারিত থাকে তবে ত্রুটি নিক্ষেপ না করে গভীরভাবে নেস্টেড বৈশিষ্ট্যগুলিতে নিরাপদ অ্যাক্সেসের অনুমতি দেয়।
  7. পার্থক্য কি null এবং undefined জাভাস্ক্রিপ্টে?
  8. undefined মানে একটি পরিবর্তনশীল ঘোষণা করা হয়েছে কিন্তু একটি মান বরাদ্দ করা হয়নি, যখন null একটি অ্যাসাইনমেন্ট মান যা কোন মান বা কোন বস্তুর প্রতিনিধিত্ব করে না।
  9. আমি কি ফাংশন প্যারামিটারে অনির্ধারিত বৈশিষ্ট্যের জন্য ডিফল্ট মান সেট করতে পারি?
  10. হ্যাঁ, ফাংশন সংজ্ঞায় ডিফল্ট পরামিতি ব্যবহার করে আপনাকে অনির্ধারিত বৈশিষ্ট্যগুলির জন্য ডিফল্ট মান প্রদান করতে দেয়।
  11. আমি কিভাবে একবারে অনির্ধারিত জন্য একাধিক বৈশিষ্ট্য পরীক্ষা করব?
  12. ব্যবহার Object.keys পদ্ধতি এবং কীগুলির অ্যারের মাধ্যমে পুনরাবৃত্তি করা একাধিক বৈশিষ্ট্য দক্ষতার সাথে পরীক্ষা করতে সহায়তা করতে পারে।
  13. এটি ব্যবহার করে অনির্ধারিত বৈশিষ্ট্য পরিচালনা করা সম্ভব? try...catch?
  14. হ্যাঁ, try...catch অনির্ধারিত বৈশিষ্ট্যগুলি অ্যাক্সেস করার সময় ব্যতিক্রমগুলি পরিচালনা করতে ব্যবহার করা যেতে পারে, ত্রুটিগুলি সুন্দরভাবে পরিচালনা করার একটি উপায় প্রদান করে।
  15. ডিস্ট্রাকচারিং এবং ডিফল্ট মানগুলি অনির্ধারিত বৈশিষ্ট্যগুলি পরিচালনা করতে কী ভূমিকা পালন করে?
  16. ডিফল্ট মান সহ ডিস্ট্রাকচারিং অ্যাসাইনমেন্ট আপনাকে অবজেক্টের বৈশিষ্ট্যগুলির জন্য ডিফল্ট সেট করতে দেয়, কিছু বৈশিষ্ট্য অনুপস্থিত থাকলেও আপনার কোড সঠিকভাবে কাজ করে তা নিশ্চিত করে।
  17. অনির্ধারিত বৈশিষ্ট্যগুলির জন্য পরীক্ষা করার সময় কোন কর্মক্ষমতা বিবেচনা আছে?
  18. পদ্ধতি ব্যবহার করে অনির্ধারিত বৈশিষ্ট্য পরীক্ষা করা হচ্ছে hasOwnProperty এবং in সাধারণত দক্ষ, কিন্তু বড় লুপে অতিরিক্ত চেক কর্মক্ষমতা প্রভাবিত করতে পারে। আপনার আবেদনের প্রয়োজনের উপর ভিত্তি করে চেক অপ্টিমাইজ করুন।

অনির্ধারিত বৈশিষ্ট্য পরিচালনার চূড়ান্ত চিন্তা

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