Разликата помеѓу нула и недефинирана во 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.