Munurinn á núlli og óskilgreindu í JavaScript
Tilvísun
JavaScriptDæmigerð notkun á núlli
Sem fallfæribreytu þýðir það að aðgerðabreytan er ekki hlutur
function myFn(obj) {
if(null == obj) {
// code
}
}
Sem lok mótmæla keðjunnar
Object.getPrototypeOf(Object.prototype);
Þegar breytunni er sleppt skal úthluta breytunni núlli
let o={
code:'abc'
};
o = null;
Dæmigerð notkun óskilgreindra
Breytan er lýst en ekki úthlutað, gildi breytunnar er óskilgreint
let o;
console.log(o); //undefined
Færibreytan sem aðgerðin ætti að veita er ekki gefin upp þegar hringt er, þá er gildi breytunnar sem ekki er veitt óskilgreint
function myFn(o) {
console.log(o);
}
myFn(); //undefined
Eiginleikar sem hluturinn inniheldur ekki, gildið er óskilgreint
let o={
code:'abc'
};
console.log(o.name); //undefined
Þegar aðgerðin skilar ekki gildi skilar hún óskilgreind sjálfgefið
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
Líkindi milli núlls og óskilgreindra
Rangt þegar breytt er í boolean
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
Munurinn á núlli og óskilgreindu
Niðurstaðan er önnur þegar henni er breytt í tölu. Niðurstaðan af núllbreytingu er gild númeragildi 0 og niðurstaðan af óskilgreindum viðskiptum er NaN.
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
Þessar tvær gerðir eru mismunandi, tegund null er hlutur og tegund óskilgreindar er óskilgreind.
console.log(typeof null); //object
console.log(typeof undefined); //undefined
bera saman núll og óskilgreint
Til að greina á milli núlls og óskilgreinds er aðeins hægt að nota samsvörun. Í samsvörun mun það strangt bera saman hvort þessar tvær gerðir séu jafnar.
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
til að taka saman
Eftir ofangreindan samanburð höfum við skýran skilning á þessum tveimur gerðum. Venjulega þegar við metum hvort breytu hafi gild gildi þegar kóði er skrifaður, þurfum við ekki að greina á milli heldur nota hana sem Boolska gerð. En þegar við þurfum að dæma um hvort eignin er til verðum við að nota stranglega gerðina til að dæma óskilgreind. Að lokum, ef við fellum tölulegt gildi, verðum við að dæma fyrst og ekki er hægt að varpa þeim beint á tölulegar gerðir, annars mun null valda því að við fáum óeðlilegar niðurstöður og óskilgreint reiknar beint ógilda niðurstöðuna NaN.