javascript - كيفية تحديد ما إذا كان المتغير "غير معرف" أو "فارغ"؟




jquery variables (16)

jQuery check element not null

var dvElement = $('#dvElement');

if (dvElement.length  > 0) {
    //do something
}
else{
    //else do something else
}

كيف يمكنني تحديد ما إذا كان المتغير غير undefined أم لا؟ قانون بلدي على النحو التالي:

var EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
  //DO SOMETHING
};
<div id="esd-names">
  <div id="name"></div>
</div>

ولكن إذا قمت بذلك ، توقف مترجم JavaScript التنفيذ.


أقوم بإجراء هذا الاختبار على وحدة التحكم في chrome ، باستخدام (void 0) يمكنك التحقق من غير معرفة

var c;
undefined
if(c === void 0)alert();
// output =  undefined
var c = 1;
// output =  undefined
if(c === void 0)alert();
// output =   undefined
// check c value  c
// output =  1
if(c === void 0)alert();
// output =  undefined
c = undefined;
// output =  undefined
if(c === void 0)alert();
// output =   undefined

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

if (window.yourVarName) {
    // Your code here
}

هذه الطريقة للتحقق لن yourVarName خطأ حتى إذا كان متغير yourVarName غير موجود.

مثال: أريد معرفة ما إذا كان مستعرضاتي يدعم واجهة برمجة تطبيقات السجل

if (window.history) {
    history.back();
}

كيف يعمل هذا:

window هي كائن يحتفظ بجميع المتغيرات العامة كخصائصه ، وفي جافا سكريبت ، من الطبيعي أن تحاول الوصول إلى خاصية كائن غير موجود. إذا كان history غير موجود ، فإن window.history تُرجع undefined . undefined غير صحيح ، لذلك لن يتم تشغيل التعليمة البرمجية في if(undefined){} .


افضل طريقه:

if(typeof variable==='undefined' || variable===null) {

/* do your stuff */
}

بلدي 5 سنتات مساهمة لحالة محددة:

var bUndef = ($('#' + selectedNodeID).position() === undefined)
if (bUndef)
....

الخاصية دون عوائق وليس العنصر!


بما أنك تستخدم jQuery ، يمكنك تحديد ما إذا كان المتغير غير معرف أم أن قيمته فارغة باستخدام دالة واحدة.

var s; // undefined
jQuery.isEmptyObject(s); // will return true;

s = null; // defined as null
jQuery.isEmptyObject(s); // will return true;

// usage
if(jQuery.isEmptyObject(s)){
    alert('Either variable: s is undefined or its value is null');
}else{
     alert('variable: s has value ' + s);
}

s = 'something'; // defined with some value
jQuery.isEmptyObject(s); // will return false;

جئت لكتابة وظيفتي الخاصة لهذا ... javascript أمر غريب

قابلة للاستخدام على أي شيء حرفيا. (لاحظ أن هذا يتحقق أيضًا مما إذا كان المتغير يحتوي على أي قيم قابلة للاستخدام. ولكن بما أن هذه المعلومات مطلوبة عادةً ، أعتقد أنه يستحق النشر). يرجى النظر في ترك ملاحظة.

function empty(v) {
        let type = typeof v;
        if(type === 'undefined') {
            return true;
        }
        if(type=== 'boolean') {
            return !v;
        }
        if(v === null) {
            return true;
        }
        if(v === undefined) {
            return true;
        }
        if(v instanceof Array) {
            if(v.length < 1) {
                return true;
            }
        }
        else if(type === 'string') {
            if(v.length < 1) {
                return true;
            }
            if(v==='0') {
                return true;
            }
        }
        else if(type === 'object') {
            if(Object.keys(v).length < 1) {
                return true;
            }
        }
        else if(type === 'number') {
            if(v===0) {
                return true;
            }
        }
        return false;
    }

نسخة مطبوعة على الآلة الكاتبة متوافق.

تصحيح. هذه الوظيفة يجب أن تفعل نفس الشيء تمامًا مثل وظيفة PHP empty() (راجع RETURN VALUES )

ترى undefined ، null ، false ، 0 ، 0.0 ، "0" {} ، [] فارغة.

"0.0" ، NaN ، " " ، true تعتبر غير فارغة.


لاختبار ما إذا كان المتغير خاليًا أو غير محدد ، استخدم الشفرة أدناه.

    if(sVal === '' || sVal === null ||typeof sVal === 'undefined'){
    console.log('variable is undefined or null');
    }

مع الحل أدناه:

const getType = (val) => typeof val === 'undefined' || !val ? null : typeof val;
const isDeepEqual = (a, b) => getType(a) === getType(b);

console.log(isDeepEqual(1, 1)); // true
console.log(isDeepEqual(null, null)); // true
console.log(isDeepEqual([], [])); // true
console.log(isDeepEqual(1, "1")); // false
etc...

يمكنني التحقق من التالي:

  • لا شيء
  • غير محدد
  • نان
  • فارغة
  • خيط ("")
  • 0
  • خاطئة

من خلال الجمع بين الإجابات المذكورة أعلاه ، يبدو أن الإجابة الأكثر اكتمالاً ستكون:

if( typeof variable === 'undefined' || variable === null ){
    // Do stuff
}

يجب أن يعمل هذا لأي متغير غير معلنة أو تم تعريفه وتعيينه صراحةً إلى قيمة خالية أو غير محددة. يجب تقييم التعبير المنطقي إلى false لأي متغير تم تعريفه والذي له قيمة غير خالية.


يؤدي استدعاء typeof null إلى إرجاع قيمة "كائن" ، نظرًا لأن قيمة خاصة خالية تعتبر مرجعًا كائنًا فارغًا. لدى Safari من خلال الإصدار 5 و Chrome من خلال الإصدار 7 ملف تعريف حيث يؤدي استدعاء typeof على تعبير عادي إلى إرجاع "الوظيفة" بينما ترجع جميع المتصفحات الأخرى "كائن".


يمكنك استخدام صفات مشغل المساواة المجردة للقيام بذلك:

if (variable == null){
    // your code here.
}

نظرًا لأن قيمة null == undefined ، فسيتم التقاط الكود السابق كلاً من null و undefined .


if(x==null) فكرة سيئة في javascript ، فإن الحكم باستخدام "==" قد يؤدي إلى إجبار نوع غير متوقع ، ولا يمكن قراءته بواسطة نص برمجي ، ولا يستخدم "==" أو "! =" في حكم !

if(x) سيكون أفضل. ولكن احتمالية 0 و "" ، سيتم التعامل معها كطريقة زائفة وغير متساوية مع "!= null" true .

https://www.w3schools.com/js/js_best_practices.asp


if (typeof EmpName != 'undefined' && EmpName) {

سيتم تقييمه إلى true إذا لم تكن القيمة:

  • لا شيء

  • غير محدد

  • نان

  • سلسلة فارغة ("")

  • 0

  • خاطئة


var i;

if(i === null || typeof i === 'undefined'){
console.log(i,'i is undefined or null')
}else{
console.log(i,'i has some value')
}

var x;
if (x === undefined) {
    alert ("only declared, but not defined.")
};
if (typeof y === "undefined") {
    alert ("not even declared.")
};

يمكنك فقط استخدام الثانية: حيث ستتحقق من التعريف والتعريف





undefined