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
        

жинақтау

Жоғарыда келтірілген салыстырудан кейін біз осы екі түр туралы нақты түсінік алдық. Әдетте, кодты жазу кезінде айнымалының жарамды мәні бар-жоғын анықтаған кезде, екеуін ажыратудың қажеті жоқ, оны логикалық тип ретінде қолданыңыз. Бірақ меншіктің бар-жоғын анықтау қажет болғанда, біз анықталмаған сот төресін қатаң түрде қолдануымыз керек. Ақырында, егер біз сандық мәнді берсек, онда біз алдымен шешім шығаруға тиіспіз, және оны сандық түрге тікелей шығаруға болмайды, әйтпесе нөл бізге әдеттен тыс нәтиже әкеледі, ал анықталмаған нәтиже NaN-ді тікелей есептейді.