javascript - यह निर्धारित करने के लिए कि क्या चर 'अपरिभाषित' या 'शून्य' है?




jquery variables (16)

jQuery attr() फ़ंक्शन या तो एक खाली स्ट्रिंग या वास्तविक मान देता है (और कभी null या undefined )। जब यह आपके चयनकर्ता ने कोई तत्व नहीं लौटाया तो एकमात्र समय यह undefined जाता है।

तो आप एक खाली स्ट्रिंग के खिलाफ परीक्षण करना चाह सकते हैं। वैकल्पिक रूप से, चूंकि खाली तार, शून्य और अपरिभाषित झूठी-वाई हैं, आप बस यह कर सकते हैं:

if (!EmpName) { //do something }

मैं कैसे निर्धारित करूं कि चर undefined या null या नहीं? मेरा कोड निम्नानुसार है:

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

लेकिन अगर मैं ऐसा करता हूं, तो जावास्क्रिप्ट दुभाषिया निष्पादन रोकता है।


jQuery जांच तत्व शून्य नहीं है

var dvElement = $('#dvElement');

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

एक विशिष्ट मामले के लिए मेरे 5 सेंट योगदान:

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

संपत्ति तत्व नहीं है!


एक साथ null और undefined करने का मानक तरीका यह है:

if (variable == null) {
     // do something 
}

- जो 100% अधिक स्पष्ट लेकिन कम संक्षिप्त के बराबर है:

if (variable === undefined || variable === null) {
     // do something 
}

पेशेवर जेएस लिखते समय, यह माना जाता है कि [समानता टाइप करें और == बनाम === ] [1] का व्यवहार समझा जाता है। इसलिए हम == उपयोग करते हैं और केवल null तुलना करते हैं।

फिर से संपादित करें

typeof के उपयोग का सुझाव देने वाली टिप्पणियां बस गलत हैं। हां, उपरोक्त मेरा समाधान एक संदर्भ त्रुटि का कारण बनता है यदि चर मौजूद नहीं है। यह एक अच्छी बात है। यह संदर्भ त्रुटि वांछनीय है: इससे आपको अपनी गलतियों को ढूंढने में मदद मिलेगी और आपके कोड को शिप करने से पहले उन्हें ठीक कर दिया जाएगा, जैसे कि अन्य भाषाओं में कंपाइलर त्रुटियां भी होंगी।

आपके कोड में अविकसित चर के लिए आपके पास कोई संदर्भ नहीं होना चाहिए।


कॉलिंग टाइपफ नल "ऑब्जेक्ट" का मान देता है, क्योंकि विशेष मान शून्य को खाली ऑब्जेक्ट संदर्भ माना जाता है। संस्करण 5 के माध्यम से सफारी और संस्करण 7 के माध्यम से क्रोम में एक क्विर्क है जहां एक नियमित अभिव्यक्ति पर कॉलिंग प्रकार "फ़ंक्शन" देता है जबकि अन्य सभी ब्राउज़र "ऑब्जेक्ट" लौटाते हैं।


चूंकि आप 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;

नीचे दिए गए समाधान के साथ:

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...

मैं निम्नलिखित की जांच करने में सक्षम हूं:

  • शून्य
  • अपरिभाषित
  • NaN
  • खाली
  • स्ट्रिंग ("")
  • 0
  • असत्य

मुझे अभी यह समस्या है यानी यह जांचना कि कोई ऑब्जेक्ट शून्य है या नहीं।
मैं बस इसका उपयोग करता हूं:

if (object) { Somecode}

अर्थात

if (document.getElementById("enterJob")) 
  document.getElementById("enterJob").className += ' current';

मैं इस परीक्षण को क्रोम कंसोल पर चलाता हूं, (शून्य 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

मैं इसके लिए अपना खुद का काम लिखने आया हूं ... जावास्क्रिप्ट अजीब है

सचमुच कुछ भी उपयोग करने योग्य। (ध्यान दें कि यह भी जांचता है कि चर में कोई उपयोग करने योग्य मान हैं । लेकिन चूंकि इस जानकारी की आमतौर पर भी आवश्यकता होती है, मुझे लगता है कि यह पोस्टिंग के लायक है)। कृपया एक नोट छोड़ने पर विचार करें।

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

टाइपप्रति संगत।

संपादित करें। इस फ़ंक्शन को वही चीज़ करना चाहिए जैसे PHPs empty() फ़ंक्शन ( RETURN VALUES देखें)

undefined , null , false , 0 , 0.0 , "0" {} , [] को खाली के रूप में समझता है।

"0.0" , NaN , " " , true को खाली नहीं माना जाता है।


यह एक बहुत पुराना सवाल है, लेकिन मुझे अभी भी लगता है कि इन 2 स्थितियों का परीक्षण करने का सबसे अच्छा / सुरक्षित तरीका स्ट्रिंग को मान डालना है:

var EmpName = $("div#esd-names div#name").attr('class');

// Undefined check
if (Object.prototype.toString.call(EmpName) === '[object Undefined]'){
    // do something with your code
}

// Nullcheck
if (Object.prototype.toString.call(EmpName) === '[object Null]'){
    // do something with your code
}

यह जांचने के लिए कि कोई चर शून्य या अपरिभाषित है, मैं नीचे दिए गए कोड का उपयोग करता हूं।

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

if(x==null) जावास्क्रिप्ट में if(x==null) बुरा विचार है, तो "==" साथ न्यायाधीश अप्रत्याशित प्रकार का दबाव पैदा कर सकता है, और कॉफी-स्क्रिप्ट द्वारा नहीं पढ़ा जा सकता है, कभी भी "==" या "! =" स्थिति के फैसले में उपयोग न करें !

if(x) होगा। लेकिन becareful 0 और "" , यह गलत के रूप में व्यवहार किया जाएगा, "!= null" साथ समान विधि नहीं है

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


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

यदि मूल्य नहीं है तो सत्य का मूल्यांकन करेगा:

  • शून्य

  • अपरिभाषित

  • NaN

  • खाली स्ट्रिंग ("")

  • 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