আমি ভেরিয়েবলটি সংজ্ঞায়িত হয়েছে কিনা তা যাচাই করতে চেয়েছিলাম। উদাহরণস্বরূপ, নিম্নলিখিতটি একটি সংজ্ঞায়িত ত্রুটি নিক্ষেপ করে
alert( x );
আমি কীভাবে এই ত্রুটিটি ধরতে পারি?
আমি ভেরিয়েবলটি সংজ্ঞায়িত হয়েছে কিনা তা যাচাই করতে চেয়েছিলাম। উদাহরণস্বরূপ, নিম্নলিখিতটি একটি সংজ্ঞায়িত ত্রুটি নিক্ষেপ করে
alert( x );
আমি কীভাবে এই ত্রুটিটি ধরতে পারি?
উত্তর:
জাভাস্ক্রিপ্টে, nullএকটি অবজেক্ট। অস্তিত্ব নেই এমন জিনিসগুলির জন্য আরও একটি মান রয়েছে undefined,। DOM nullপ্রায় সব ক্ষেত্রেই ফিরে আসে যেখানে ডকুমেন্টে কিছু কাঠামো খুঁজে পেতে ব্যর্থ হয় তবে জাভাস্ক্রিপ্টে নিজেই undefinedব্যবহৃত মূল্য।
দ্বিতীয়ত, না, সরাসরি সমতুল্য নেই। আপনি যদি সত্যিই বিশেষভাবে জন্য অনুসন্ধান nullকরতে চান তবে করুন:
if (yourvar === null) // Does not execute if yourvar is `undefined`
যদি আপনি কোনও ভেরিয়েবলের উপস্থিতি আছে কিনা তা পরীক্ষা করতে চান তবে এটি কেবল try/ দিয়ে সম্পন্ন হতে পারে catch, যেহেতু typeofএকটি অঘোষিত ভেরিয়েবল এবং undefinedসমতুল্য মান হিসাবে ঘোষিত একটি ভেরিয়েবলকে বিবেচনা করবে ।
তবে, কোনও ভেরিয়েবল ঘোষিত হয়েছে কিনা এবং তা পরীক্ষা করে দেখুন undefined:
if (yourvar !== undefined) // Any scope
পূর্বে, typeofঅপারেটরটিকে নিরাপদে অপরিজ্ঞাতভাবে পরীক্ষা করতে অপারেটরটি ব্যবহার করা দরকার ছিল , কারণ undefinedভেরিয়েবলের মতোই পুনরায় সাইন করা সম্ভব হয়েছিল । পুরানো উপায়টি এরকম দেখাচ্ছে:
if (typeof yourvar !== 'undefined') // Any scope
ইস্যু undefinedহচ্ছে পুনরায় হস্তান্তরযোগ্য নাম ECMAScript 5, যা 2009 এখন আপনি নিশ্চিন্তে ব্যবহার করতে পারেন মুক্তি পায় সংশোধন করা হয় ===এবং !==এর জন্য পরীক্ষা undefinedব্যবহার না করেই typeofযেমন undefinedশুধুমাত্র পাঠযোগ্য হয়েছে কিছু সময়ের জন্য।
যদি আপনি জানতে চান যে কোনও সদস্য স্বতন্ত্র রয়েছেন কিনা তবে তার মান কী তা বিবেচনা করবেন না:
if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance
যদি আপনি জানতে চান যে একটি পরিবর্তনশীল সত্যবাদী কিনা :
if (yourvar)
ভেরিয়েবলটি সত্যিকারভাবে পরীক্ষা করার একমাত্র উপায় undefinedনিম্নলিখিতটি করা। মনে রাখবেন, অপরিবর্তিত জাভাস্ক্রিপ্টের একটি বিষয়।
if (typeof someVar === 'undefined') {
// Your variable is undefined
}
এই থ্রেডের অন্যান্য কয়েকটি সমাধান আপনাকে বিশ্বাস করতে পরিচালিত করবে যে একটি পরিবর্তনশীল নির্ধারিত হলেও সুনির্দিষ্ট নয় (উদাহরণস্বরূপ NULL বা 0 এর মান সহ)।
ReferenceError।
undefinedজাভাস্ক্রিপ্টে একটি বিষয় হ'ল ভুল তথ্য। এই বিবৃতি কি আপনার উত্তরের সাথে সম্পর্কিত? এটি এমন একটি মান undefined, undefinedযা বিশ্বব্যাপী সনাক্তকারীকে নাম দেওয়া হয়েছে undefined।
undefinedES5 সাল থেকে কেবল পাঠযোগ্য। আপনি undefined ব্যবহার করার জন্য নিরাপদে পরীক্ষা করতে পারেন if (x === undefined) {...}অথবা এই মত সাধারণভাবে সংক্ষেপে ব্যবহার করছে: if (x === void 0)।
প্রযুক্তিগতভাবে, সঠিক সমাধানটি হল (আমি বিশ্বাস করি):
typeof x === "undefined"
আপনি কখনও কখনও অলস এবং ব্যবহার করতে পারেন
x == null
তবে এটি একটি অপরিবর্তিত ভেরিয়েবল এক্স, এবং নালযুক্ত একটি ভেরিয়েবল এক্স উভয়কে সত্যে ফিরে আসতে দেয়।
var x;এবং তারপরে typeof x;আপনি "undefined"যেমনটি করেন ঠিক typeof lakjdflkdsjflsj;
আরও সহজ এবং আরও শর্টহ্যান্ড সংস্করণটি হ'ল:
if (!x) {
//Undefined
}
অথবা
if (typeof x !== "undefined") {
//Do something since x is defined.
}
আমি প্রায়শই করেছি:
function doSomething(variable)
{
var undef;
if(variable === undef)
{
alert('Hey moron, define this bad boy.');
}
}
আপনি টেরিনারি শর্তসাপেক্ষে অপারেটরও ব্যবহার করতে পারেন:
var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);
//var a = "hallo world";
var a = !a ? document.write("i dont know 'a'") : document.write("a = " + a);
var a = false;? a===undefinedপরিবর্তে যদি আপনার এটি পরীক্ষা করা উচিত
var x; উপরের কাজটি ত্রুটি ছুঁড়ে ফেলবে
!aজন্যই পরীক্ষা করা হবে না undefined, এটি 0এবং nullএবং এর ক্ষেত্রেও সত্য পরীক্ষা করে false। এটি খুব ভুল এবং এটি সরানো উচিত।
আমি প্রায়শই সহজ উপায় ব্যবহার করি:
var variable;
if (variable === undefined){
console.log('Variable is undefined');
} else {
console.log('Variable is defined');
}
সম্পাদনা করুন:
ভেরিয়েবলটি আরম্ভ না করে ব্যতিক্রম ছুঁড়ে ফেলা হবে "আনকচড রেফারেন্স এরিয়ার: ভেরিয়েবল সংজ্ঞায়িত করা হয়নি ..."
Uncaught ReferenceError: variable is not defined
variableদ্বারা সংজ্ঞায়িত করা হয় var variable;। এবং এই স্নিপেট variableস্থানীয় স্কোয়ারে ওভাররাইড হবে । এটি যুক্তি ভাঙ্গতে পারে যা বন্ধ বা গ্লোবাল ভেরিয়েবল অ্যাক্সেসের প্রত্যাশা করে। অর্থ:var variable = 1; function test() { var variable; if (variable === undefined){ console.log('Variable is undefined'); } else { console.log('Variable is defined: ' + variable); } } test(); // Variable is undefined
আর একটি সম্ভাব্য "সমাধান" হ'ল windowঅবজেক্টটি ব্যবহার করা । এটি কোনও ব্রাউজারে থাকা অবস্থায় রেফারেন্স ত্রুটির সমস্যা এড়ায়।
if (window.x) {
alert('x exists and is truthy');
} else {
alert('x does not exist, or exists and is falsy');
}
undefined। এটি এটি করবে না।
ত্রুটি আপনাকে বলছে যে xএমনকি নেই! এটি ঘোষিত হয়নি , যা কোনও মূল্য নির্ধারিত হওয়ার চেয়ে আলাদা ।
var x; // declaration
x = 2; // assignment
যদি আপনি ঘোষণা করেন x, আপনি কোনও ত্রুটি পাবেন না। আপনি একটি সতর্কতা পাবেন যা বলবে undefinedযে xউপস্থিত রয়েছে / ঘোষণা করা হয়েছে তবে কোনও মান নির্ধারিত হয়নি।
ভেরিয়েবলটি ঘোষিত হয়েছে কিনা তা পরীক্ষা করতে, আপনি ব্যবহার করতে পারেন typeof, ভেরিয়েবলের উপস্থিতি আছে কিনা তা যাচাইয়ের যে কোনও অন্য পদ্ধতি আপনাকে প্রাথমিকভাবে একই ত্রুটিটি বাড়িয়ে তুলবে।
if(typeof x !== "undefined") {
alert(x);
}
এটি সঞ্চিত মানের ধরণটি পরীক্ষা করছে x। এটা শুধুমাত্র ফিরে আসবে undefinedযখন xঘোষণা করা হয়নি বা যদি এটি করেছে ঘোষিত হয়েছে এবং এখনো নির্ধারিত হয়নি।
typeofঅপারেটরের দরকার নেই ।
voidঅপারেটর আয় undefinedকোনো আর্গুমেন্ট / প্রকাশের জন্য এটি পাস। যাতে আপনি ফলাফলটির বিরুদ্ধে পরীক্ষা করতে পারেন (আসলে কিছু মিনিফায়ার আপনার কোডটি কয়েক অক্ষর সংরক্ষণ undefinedকরতে পরিবর্তন করে void 0)
উদাহরণ স্বরূপ:
void 0
// undefined
if (variable === void 0) {
// variable is undefined
}
typeofএবং চিন্তাভাবনা undefinedপুনরায় বরাদ্দ করা যেতে পারে যা প্রায় এক দশক ধরে সম্ভব হয়নি।
undefined, কারণ God শ্বর কেবল কারণেই জানেন, ব্যবহার void 0সর্বদা undefinedনির্বিশেষে ফিরে আসবে ।
আমরা undefinedনিম্নলিখিত হিসাবে পরীক্ষা করতে পারেন
var x;
if (x === undefined) {
alert("x is undefined");
} else {
alert("x is defined");
}
গৃহীত উত্তরটি সঠিক। আরও একটি বিকল্প যুক্ত করতে চেয়েছিলেন। আপনি try ... catchএই পরিস্থিতিটি পরিচালনা করতে ব্লকও ব্যবহার করতে পারেন । একটি অদ্ভুত উদাহরণ:
var a;
try {
a = b + 1; // throws ReferenceError if b is not defined
}
catch (e) {
a = 1; // apply some default behavior in case of error
}
finally {
a = a || 0; // normalize the result in any case
}
catchব্লক সম্পর্কে সচেতন থাকুন যা কিছুটা অগোছালো কারণ এটি একটি ব্লক-স্তরীয় সুযোগ তৈরি করে। এবং, অবশ্যই, উদাহরণটি জিজ্ঞাসিত প্রশ্নের উত্তর দেওয়ার জন্য অত্যন্ত সরল করে দেওয়া হয়েছে, এটি ত্রুটি পরিচালনার সেরা অনুশীলনগুলি কভার করে না;)।
কোনও ভেরিয়েবল ঘোষণা করা হয়েছে যাচাই করতে আমি একটি ছোট ফাংশন ব্যবহার করি, যা সত্যিই আমার জাভাস্ক্রিপ্ট ফাইলগুলিতে বিশৃঙ্খলার পরিমাণ হ্রাস করে। ভেরিয়েবলটি কেবল বিদ্যমান নয়, এটির জন্য একটি মানও বরাদ্দ করা হয়েছে তা নিশ্চিত করার জন্য আমি মানটির জন্য একটি চেক যোগ করি। দ্বিতীয় শর্তটি ভেরিয়েবলটিও ইনস্ট্যান্ট করা হয়েছে কিনা তা যাচাই করে, কারণ যদি ভেরিয়েবলটি সংজ্ঞায়িত করা হয় তবে তা ইনস্ট্যান্টিয়েটেড হয় না (নীচে উদাহরণ দেখুন), আপনি যদি আপনার কোডটিতে এর মান উল্লেখ করার চেষ্টা করেন তবে এটি ত্রুটি ছুঁড়ে ফেলবে।
তাত্ক্ষণিক নয় - তাত্ক্ষণিক var my_variable;-var my_variable = "";
function varExists(el) {
if ( typeof el !== "undefined" && typeof el.val() !== "undefined" ) {
return true;
} else {
return false;
}
}
তারপরে আপনি শর্তযুক্ত বিবৃতিটি পরীক্ষা করতে ব্যবহার করতে পারেন যে ভেরিয়েবল উভয়ই এর মতো সংজ্ঞায়িত এবং তাত্ক্ষণিকভাবে ...
if ( varExists(variable_name) ) { // checks that it DOES exist }
বা পরীক্ষা করার জন্য এটি সংজ্ঞায়িত করা হয়নি এবং তাত্ক্ষণিকভাবে ব্যবহার করা হয়নি ...
if( !varExists(variable_name) ) { // checks that it DOESN'T exist }
return typeof el !== "undefined" && typeof el.val() !== "undefined"