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




jquery variables null undefined (20)

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

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

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

मैं कैसे निर्धारित करूं कि चर 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>

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


ऐसा करने के लिए आप अमूर्त समानता ऑपरेटर के गुणों का उपयोग कर सकते हैं:

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

क्योंकि null == undefined सत्य है, उपर्युक्त कोड null और undefined दोनों को पकड़ लेगा।


टाइपफॉफ़ का उपयोग करके आप यह जांच सकते हैं कि मान अनिर्धारित या शून्य है या नहीं:

if(typeof value == 'undefined'){

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

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

if (!EmpName) { //do something }

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


if (variable == null) {
    // Do stuff, will only match null or undefined, this won't match false
}

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

यह दोनों शून्य और अपरिभाषित पकड़ता है


यदि आप जिस चर को देखना चाहते हैं वह वैश्विक है, तो करें

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

जांचने का यह तरीका एक त्रुटि नहीं फेंक देगा भले ही yourVarName चर मौजूद न हो।

उदाहरण: मैं जानना चाहता हूं कि मेरा ब्राउज़र इतिहास API का समर्थन करता है या नहीं

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

यह कैसे काम करता है:

window एक ऐसी वस्तु है जो सभी वैश्विक चर को अपनी गुणों के रूप में रखती है, और जावास्क्रिप्ट में गैर-मौजूदा ऑब्जेक्ट प्रॉपर्टी तक पहुंचने का प्रयास करना कानूनी है। यदि history मौजूद नहीं है तो window.history undefined लौटाता है। undefined गलत है, इसलिए if(undefined){} एक if(undefined){} ब्लॉक में कोड नहीं चलाया जाएगा।


उपर्युक्त उत्तरों का मिश्रण, ऐसा लगता है कि सबसे पूरा जवाब होगा:

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

यह किसी भी चर के लिए काम करना चाहिए जो या तो अविकसित या घोषित किया गया है और स्पष्ट रूप से शून्य या अपरिभाषित पर सेट है। बुलियन अभिव्यक्ति को किसी घोषित चर के लिए झूठी मूल्यांकन करना चाहिए जिसमें वास्तविक गैर-शून्य मान है।


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

var dvElement = $('#dvElement');

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

var i;

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

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

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

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 को खाली नहीं माना जाता है।


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

if (object) { Somecode}

अर्थात

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

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

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
  • असत्य

यह एक बहुत पुराना सवाल है, लेकिन मुझे अभी भी लगता है कि इन 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
}

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

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

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

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


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

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

शायद जावा 8 या नए के लिए सबसे अच्छा विकल्प Optionalवर्ग का उपयोग करना है ।

Optional stringToUse = Optional.of("optional is there");
stringToUse.ifPresent(System.out::println);

यह संभावित शून्य मूल्यों की लंबी श्रृंखला के लिए विशेष रूप से आसान है। उदाहरण:

Optional<Integer> i = Optional.ofNullable(wsObject.getFoo())
    .map(f -> f.getBar())
    .map(b -> b.getBaz())
    .map(b -> b.getInt());

नल पर अपवाद फेंकने के उदाहरण पर उदाहरण:

Optional optionalCarNull = Optional.ofNullable(someNull);
optionalCarNull.orElseThrow(IllegalStateException::new);

जावा 7 ने Objects.requireNonNullविधि को पेश किया जो गैर-शून्यता के लिए कुछ जांचने पर आसान हो सकता है। उदाहरण:

String lowerVal = Objects.requireNonNull(someVar, "input cannot be null or empty").toLowerCase();




javascript jquery variables null undefined