Разликата помеѓу нула и недефинирана во JavaScript

Референца

JavaScript

Типична употреба на нула

Како параметар на функцијата, тоа значи дека параметарот на функцијата не е објект

            function myFn(obj) {
    if(null == obj) {
        // code
    }
}
        

Како крај на ланецот прототип на објектот

            Object.getPrototypeOf(Object.prototype);
        

Кога ја ослободувате променливата, доделете нула на променливата

            let o={
 code:'abc'
};
o = null;
        

Типична употреба на недефинирана

Променливата е декларирана, но не е доделена, вредноста на променливата е недефинирана

            let o;
console.log(o);    //undefined
        

Параметарот што функцијата треба да го обезбеди не е даден при повик, тогаш вредноста на параметарот што не е дадена е недефинирана

            function myFn(o) {
    console.log(o);
}
myFn();   //undefined
        

Карактеристики што објектот не ги содржи, вредноста е недефинирана

            let o={
 code:'abc'
};
console.log(o.name);    //undefined
        

Кога функцијата не враќа вредност, се враќа недефинирано стандардно

            function myFn(obj) {
    obj = 'a';
}
console.log(myFn());    //undefined
        

Сличности помеѓу нула и недефинирано

Лажно кога се претвора во булова

            console.log(Boolean(null));  // false
console.log(Boolean(undefined)); // false
        

Разликата помеѓу нула и недефинирана

Резултатот е различен кога се претвора во број. Резултатот од нултата конверзија е валидна бројна вредност од 0, а резултатот од недефинирана конверзија е NaN.

            console.log(Number(null));  // 0
console.log(Number(undefined)); // NaN
        

Двата вида се различни, типот на нула е објект, а типот на недефиниран е недефиниран.

            console.log(typeof null); //object
console.log(typeof undefined); //undefined
        

споредете ништовна и недефинирана

За да се направи разлика помеѓу нула и недефинирано, може да се користи само конгруенција. Во согласност, строго ќе се спореди дали двата типа се еднакви.

            console.log(Boolean(null == undefined));  // true
console.log(Boolean(null === undefined)); // false
        

да резимираме

По горенаведената споредба, имаме јасно разбирање за овие два вида. Обично кога проценуваме дали променливата има валидна вредност при пишување код, не треба да правиме разлика помеѓу двете, само користете ја како Буловски тип. Но, кога треба да процениме дали имотот постои, мора строго да го користиме типот за да судиме недефиниран. Конечно, ако поминеме нумеричка вредност, прво мора да донесеме проценка и не може директно да се пренесе на нумерички тип, инаку null ќе предизвика да добиеме ненормални резултати, а недефинираниот директно ќе го пресмета невалидниот резултат NaN.