It ferskil tusken null en undefined yn JavaScript
Referinsje
JavaScriptTypysk gebrûk fan null
As funksjeparameter betsjuttet it dat de funksjeparameter gjin objekt is
function myFn(obj) {
if(null == obj) {
// code
}
}
As it ein fan 'e objekt prototype keten
Object.getPrototypeOf(Object.prototype);
As jo de fariabele frijlitte, wizigje null oan de fariabele
let o={
code:'abc'
};
o = null;
Typysk gebrûk fan undefined
De fariabele wurdt ferklearre, mar net tawiisd, de wearde fan 'e fariabele is net definieare
let o;
console.log(o); //undefined
De parameter dy't de funksje leverje moat is net foarsjoen by it skiljen, dan is de wearde fan 'e parameter dy't net wurdt levere net definieare
function myFn(o) {
console.log(o);
}
myFn(); //undefined
Eigenskippen dy't it objekt net befettet, de wearde is undefined
let o={
code:'abc'
};
console.log(o.name); //undefined
As de funksje gjin wearde werombringt, dan wurdt dizze standert definieare werom
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
Oerienkomsten tusken null en undefined
Falsk as konvertearre nei booleaansk
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
It ferskil tusken null en undefined
It resultaat is oars as konverteare nei in getal. It resultaat fan nulkonverzje is in jildige getalwearde fan 0, en it resultaat fan undefined konverzje is NaN.
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
De twa soarten binne oars, it type null is objekt, en it type undefined is undefined.
console.log(typeof null); //object
console.log(typeof undefined); //undefined
ferlykje null en undefined
Om ûnderskied te meitsjen tusken nul en undefined, kin allinich kongruens brûkt wurde. Yn kongruens sil it strikt fergelykje oft de twa soarten gelyk binne.
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
opsomje
Nei de boppesteande fergeliking hawwe wy in dúdlik begryp fan dizze twa soarten. Meastentiids as wy beoardielje oft in fariabele in jildige wearde hat by it skriuwen fan koade, hoege wy gjin ûnderskied te meitsjen tusken de twa, brûke se gewoan as in Booleaanske type. Mar as wy moatte oardielje oft it pân bestiet, moatte wy it type strikt brûke om net definieare te oardieljen. As lêste, as wy in numerike wearde passe, moatte wy earst in oardiel meitsje en kinne wy net direkt nei in numeryk type wurde getten, oars sil null ús abnormale resultaten krije, en undefined sil it unjildige resultaat NaN direkt berekkenje.