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-ді тікелей есептейді.