Munurinn á núlli og óskilgreindu í JavaScript

Tilvísun

JavaScript

Dæ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.