জাভাস্ক্রিপ্টে ঠিক অপরিজ্ঞাত অর্থ কী? ওখানে কেন? এটা কি ব্যবহার করে? কিভাবে এটি দরকারী হতে পারে?


11

জাভাস্ক্রিপ্টে আমাদের কিছু অপরিজ্ঞাত বলা আছে । আমি কিছু বলেছিলাম, কারণ আমি জানি না যে এটি কোনও বেস শ্রেণি, বা অন্তর্নির্মিত ভেরিয়েবল, বা কীওয়ার্ড বা অন্য কিছু। আমি জানি যে এটা আছে।

এটি কার্যকরভাবে দেখতে, আপনি কেবল লিখতে পারেন:

undefined;
typeof undefined;

কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন কেন এই জিনিসটি জাভাস্ক্রিপ্টে inোকানো হয়েছে? nullএই ভাষায় আমাদের মূল্য আছে , সুতরাং এটির মতো কিছু হওয়া উচিত নয় null। অন্যান্য ভাষায়, আমরা যখন কোনও সম্পত্তি বা ভেরিয়েবলের মান জানি না, তখন আমরা কেবল এটি বাতিল করে রাখি set এখানে আমরা একই জিনিস করতে পারি।

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



এটিকে নিয়ে এখানে আলোচনা করা হয়েছিল stackoverflow.com/questions/6999291/…
পল

উত্তর:


13

অপরিশোধিত সম্পর্কে আপনার দুটি বিষয় বুঝতে হবে ...

  • যে ধরণের undefined শুধুমাত্র একটি মান থাকতে পারে
  • পরিবর্তনশীল undefined

এখন নিচের বিষয়গুলি খুব মনোযোগ দিয়ে পড়ুন ...

  • ধরণের অনেক মান রয়েছে number(10, 10.01, 1e1)। তবে কেবলমাত্র এক ধরণের মান থাকতে পারে undefinedএবং সেই মানটি ভেরিয়েবলের মধ্যে সঞ্চিত থাকে undefinedযে মান কোন আক্ষরিক উপস্থাপনা আছে - যেমন, NUMBER টি মান 1, 100, 1e-1টাইপ সংখ্যা সব লিটারেল, কিন্তু পরিবর্তনশীল সঞ্চিত মান undefinedকোন আক্ষরিক ফর্ম আছে।

  • undefinedএকটি পরিবর্তনশীল, কেবলমাত্র একটি সাধারণ পরিবর্তনশীল, এটি জাভাস্ক্রিপ্ট ঘোষিত করে এবং undefinedবিশ্বব্যাপী সুযোগে টাইপের মান নির্ধারণ করে । সুতরাং আপনি নিম্নলিখিত সমস্ত করতে পারেন ...

  টাইপ অফ অপরিশোধিত; // "অপরিবর্তিত"

  অপরিবর্তিত = 100;
  টাইপ অফ অপরিশোধিত; // "সংখ্যা"

  অপরিশোধিত = শূন্য 0;
  টাইপ অফ অপরিশোধিত; // "অপরিবর্তিত"

  উইন্ডো.উন্ডফাইন্ডড === অপরিবর্তিত; // সত্য
  উইন্ডো.উন্ডফাইন্ডড === শূন্য 0; // সত্য
  
  • আপনি যদি ভেরিয়েবলটি ব্যবহার করতে না চান undefined, আপনি undefinedপ্রকাশের মাধ্যমে টাইপের মান উত্পন্ন করতে পারবেন void 0- যার একমাত্র উদ্দেশ্য টাইপের মান ফিরিয়ে দেওয়া undefined

... কেউ দয়া করে আমাকে ব্যাখ্যা করতে পারেন কেন এই জিনিসটি জাভাস্ক্রিপ্টে sertedোকানো হয়েছে ...

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

... আমাদের নাল মান আছে ...

যদিও nullজিনিসগুলি করতে পারে undefinedতবে এটি objectsস্কেলারগুলির চেয়ে কম-বেশি সম্পর্কিত । প্রকৃতপক্ষে, জাভাস্ক্রিপ্ট nullনিজেকে একটি বস্তু হিসাবে বিবেচনা করে - typeof null"অবজেক্ট" প্রদান করে।

আমার মতে, বটম লাইন কারণ পরম উদ্দেশ্যের চেষ্টা না করা হয় undefinedএবং nullআপনার কোড, পাঠযোগ্য রক্ষণীয় এবং পুনর্ব্যবহারযোগ্য এবং intelligibly আপনার কোডে তাদের ব্যবহার, তাই -।


2
ভাল ব্যাখ্যা @ গ্রিনজিট the bottom line is to NOT try to reason the absolute purposes of undefined and null, মনে হচ্ছে জাভাস্ক্রিপ্টটি যৌক্তিক ভাষা হওয়া থেকে কিছুটা দূরে এবং আমাদের কেবল নতুন পৃথিবীর পরীক্ষার মতো এটির অভ্যস্ত হতে হবে।
সা Saeedদ নেমতি

1
"যার একমাত্র উদ্দেশ্য হ'ল ধরণের মান ফিরিয়ে দেওয়া undefined"। প্রকৃতপক্ষে voidএকটি অভিব্যক্তি মূল্যায়ন করে, রিটার্ন মানটিকে উপেক্ষা করে মানটি ফেরত দেয় undefined। মতপার্থক্য হিসাবে। undefinedএই জিনিসের কোনও মূল্য নেই বলে জেএস ইঞ্জিন ব্যবহার করে। আপনার এই জিনিসটির কোনও মূল্য নেই বলে আপনিnull ব্যবহার করেন । একটি স্পষ্ট পার্থক্য আছে।
রায়নস

1
undefined = 100; typeof undefined;আমার জন্য "অপরিজ্ঞাত" ফিরিয়ে দেয়, আপনি যদি নালকে অর্পণ করার চেষ্টা করেন তবে আপনি একটি ত্রুটি পান। ভবিষ্যতের পাঠকদের জন্য কেবল এটি স্পষ্ট করে বলতে চেয়েছিলেন।
জোশ রুম্বট

6

কোনও পুরানো প্রশ্নের উত্তরের জন্য দুঃখিত তবে আপনার অপরিজ্ঞাত ও নাল উভয়ের প্রয়োজনের কারণটি সহজ: একটি প্রোটোটাইপ-ভিত্তিক হাঁস-টাইপিং ভাষায় আপনাকে অবশ্যই "এই বস্তুটি এক্স এর জন্য কোনও মান নির্ধারণ করে না" এবং "এই অবজেক্টটি বলে এক্স এটি বলে কিছুই / নাল / খালি "।

এই ক্ষমতা ব্যতীত প্রোটোটাইপ চেইন হাঁটার কোনও উপায় নেই এবং সুতরাং উত্তরাধিকার কাজ করতে পারে না; আপনাকে অবশ্যই নির্ধারণ করতে সক্ষম করতে হবে যে আপজ.সোমপ্রপ অপরিজ্ঞাত রয়েছে তাই আপনি আপত্তি.প্রোটোটাইপ.সোমপ্রপটি দেখতে পারেন এবং যতক্ষণ না আপনি কোনও মান খুঁজে পান ততক্ষণে চেইনটি এগিয়ে যেতে পারেন। যদি প্রজেক্ট.সোমপ্রপ নালায় ফিরে আসে তবে এটি জানার উপায় নেই যে এটি সত্যিই নাল ছিল বা কেবলমাত্র "আমার প্রোটোটাইপটি দেখুন" meant এর আশেপাশের একমাত্র উপায় হ'ল পর্দার আড়ালে কিছু কলডজি ম্যাজিক ইনজেকশন করা যা প্রোটোটাইপ চেইনগুলির সাথে ঝাপসাতে এবং জেএস ব্ল্যাক ম্যাজিকের অন্যান্য বিটগুলি করার আপনার ক্ষমতাকে ভেঙে দেয়।

জাভাস্ক্রিপ্টের অনেকটির মতোই, অপরিজ্ঞাত এবং নাল ধারণাটি প্রথমে দুর্বোধ্য এবং মূ .় বলে মনে হয়, পরে একেবারে উজ্জ্বল (তারপরে উইনকি এবং বোকা ফিরে তবে যুক্তিযুক্ত ব্যাখ্যা সহ)।

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


3

এখানে একটি গ্লোবাল ভেরিয়েবল রয়েছে undefined, যা নির্ধারিত মানতে সেট করা আছে। দুষ্ট লোকেরা এটিকে অন্য কোনও কিছুতে সেট করতে পারে, তাই এটি বিশ্বাস না করাই সম্ভবত সেরা।

  • অপরিবর্তিত মান হ'ল কোনও ফাংশনের রিটার্ন মান যা কোনও মান দেয় না।
  • অপরিবর্তিত মান হ'ল একটি ভেরিয়েবলের মান যা নির্ধারিত হয়নি।
  • অপরিবর্তিত মানটি এমন একটি প্যারামিটারের মান যা উত্তীর্ণ হয় নি।
  • অপরিজ্ঞাপিত মান হ'ল এমন একটি সম্পত্তির মান যা নির্ধারিত হয়নি।
  • 'অপরিজ্ঞাত' হ'ল একটি অঘোষিত ভেরিয়েবলের প্রকার। (( typeof undeclaredVariable == 'undefined'একটি আন্ডারফাইন্ড ভেরিয়েবলের মান পড়ার চেষ্টা করা আপনাকে নিক্ষেপ করবে ReferenceError))

nullসূক্ষ্মভাবে ভেঙে গেছে, কারণ typeof null == 'object'। আমি জানি না কেন আমাদের undefinedএবং nullসম্ভবত কিছু historicalতিহাসিক দুর্ঘটনা ঘটেছে।


2

হ্যাঁ, undefinedএমন কিছুর মূল্যায়ন করার মাধ্যমে প্রাপ্ত একটি সেন্ডিনেল মান যা বিপরীত হিসাবে সংজ্ঞায়িত হয় নাnull , যা কোনও কিছুই উপস্থাপনের জন্য হুবহু সংজ্ঞাযুক্ত মান ।

var o = { };
> undefined
o
> Object {}
o.foo
> undefined
function f() {}
> undefined
function r() { return null; }
> undefined
f()
> undefined
r()
> null

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

আপনি undefinedএবং এর nullমধ্যে NaNএবং এর মধ্যকার সম্পর্কের কথা ভাবতে পারেন 0


"একটি ফাংশন এর মান ফিরে, যে একটি ফেরত মান নির্ধারণ করে না undefined হয়", আপনি যে অর্থ কী undefinedহয় void?
সা Saeedদ নেমতি

@ সাeedদ: বেশ নয়। voidজাভাস্ক্রিপ্ট একটি অ্যানারি অপারেটর , যে কোনও যুক্তি লাগে এবং মান ফেরত undefined
back2dos
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.