javascript - بحث - شرح جافا سكريبت




كيفية التحقق من متغير غير معرف في JavaScript (8)

آخر "حل" محتمل هو استخدام كائن window . وهو يتجنب مشكلة الخطأ المرجعي في المتصفح.

if (window.x) {
    alert('x exists and is truthy');
} else {
    alert('x does not exist, or exists and is falsy');
}

كنت أرغب في التحقق مما إذا كان المتغير معرفًا أم لا. على سبيل المثال ، يلقي التالي خطأ لم يتم تعريفه

alert( x );

كيف يمكنني التقاط هذا الخطأ؟


الجواب المقبول هو الصحيح. أردت فقط إضافة خيار واحد إضافي. يمكنك أيضا استخدام try ... catch كتلة 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 ، التي هي فوضوي بعض الشيء ، لأنها تخلق نطاق مستوى الكتلة. وبطبيعة الحال ، يتم تبسيط المثال بشكل كبير للإجابة على السؤال المطروح ، فهو لا يغطي أفضل الممارسات في معالجة الأخطاء ؛).


الطريقة الوحيدة للاختبار الحقيقي إذا كان المتغير غير undefined هو القيام بما يلي. تذكر ، undefined عبارة عن كائن في JavaScript.

if (typeof someVar === 'undefined') {
  // Your variable is undefined
}

بعض الحلول الأخرى في هذا الموضوع ستقودك إلى الاعتقاد بأن متغيرًا غير معرف حتى لو تم تعريفه (بقيمة NULL أو 0 ، على سبيل المثال).


سيكون الإصدار الأسهل والأكثر اختصارًا هو:

if (!x) {
   //Undefined
}

أو

if (typeof x !== "undefined") {
    //Do something since x is defined.
}

في JavaScript ، null كائن. هناك قيمة أخرى للأشياء غير الموجودة ، undefined . إرجاع DOM null لكل الحالات تقريبًا حيث فشلت في العثور على بعض البنية في المستند ، ولكن بلغة JavaScript نفسها undefined هي القيمة المستخدمة.

ثانيًا ، لا ، ليس هناك مكافئ مباشر. إذا كنت تريد حقًا التحقق من وجود قيمة معينة ، فعليك القيام بما يلي:

if (yourvar === null) // Does not execute if yourvar is `undefined`

إذا كنت ترغب في التحقق من وجود متغير ، فلا يمكن القيام بذلك إلا مع try / catch ، لأن typeof سوف يعالج متغير غير مُعلن ومُعلِن مُعلن بقيمة undefined .

ولكن ، للتحقق مما إذا كان المتغير قد تم الإعلان عنه ولم يتم undefined :

if (typeof yourvar !== 'undefined') // Any scope

إذا كنت تعرف وجود المتغير ، وتريد التحقق مما إذا كانت هناك أي قيمة مخزنة فيه:

if (yourvar !== undefined)

إذا كنت تريد معرفة ما إذا كان العضو مستقلاً ولكن لا يهم ما هي قيمته:

if ('membername' in object) // With inheritance
if (object.hasOwnProperty('membername')) // Without inheritance

إذا كنت تريد معرفة ما إذا كان المتغير truthy :

if (yourvar)

Source


لقد غالبًا ما فعلت:

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);


يمكننا التحقق من undefined النحو التالي

var x; 

if (x === undefined) {
    alert("x is undefined");
} else {
     alert("x is defined");
}




undefined