Різниця між null та undefined у JavaScript

Довідково

JavaScript

Типове використання null

Як параметр функції це означає, що параметр функції не є об’єктом

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

Як кінець ланцюжка прототипу об’єкта

            Object.getPrototypeOf(Object.prototype);
        

Випускаючи змінну, присвоюйте змінній значення null

            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
        

Два типи різні, тип null - об’єкт, а тип undefined - невизначений.

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

порівняти null та undefined

Щоб розрізнити нульову та невизначену, можна використовувати лише конгруентність. У конгруентності вона суворо порівнюватиме, чи рівні два типи.

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

Підсумовуючи

Після наведеного вище порівняння ми чітко розуміємо ці два типи. Зазвичай, коли ми судимо, чи має змінна допустиме значення під час написання коду, нам не потрібно розрізняти ці два, просто використовуємо її як логічний тип. Але коли нам потрібно судити про те, чи існує властивість, ми повинні суворо використовувати тип для оцінки невизначеного. Нарешті, якщо ми передаємо числове значення, ми повинні спочатку прийняти рішення, і не може бути безпосередньо передано числовий тип, інакше значення null призведе до отримання ненормальних результатів, а undefined безпосередньо обчислить недійсний результат NaN.