আমি ভেরিয়েবলটি সংজ্ঞায়িত হয়েছে কিনা তা যাচাই করতে চেয়েছিলাম। উদাহরণস্বরূপ, নিম্নলিখিতটি একটি সংজ্ঞায়িত ত্রুটি নিক্ষেপ করে
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
।
undefined
ES5 সাল থেকে কেবল পাঠযোগ্য। আপনি 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"