javascript/typescript objekt null-sjekk


Er det en forskjell i ytelse når man gjør null-sjekker på de to måtene nedenfor -

if (!someObject) {
   // dosomething
}

mot

if (someObject != null) {
   // dosomething
}

Svar #1

!someObject sjekker etter alle falske verdier.

Not ( empty string, undefined, null, 0, false) - will all pass the condition

mens den første betingelsen bare sjekker for null.

 if (someObject !== null) {
    console.log('falsey');
 }

 someObject = null;      // no message in console
 someObject = '';        // falsey
 someObject = undefined; // falsey
 someObject = 0;         // falsey
 someObject = false;     // falsey

Falsk sjekk

if (!someObject) {
    console.log('falsey');
 }

 someObject = null;      // no message in console
 someObject = '';        // no message in console
 someObject = undefined; // no message in console
 someObject = 0;         // no message in console
 someObject = false;     // no message in console

Svar #2

for å sjekke for null riktig må du skrive:

  if(!someobject && typeof someobject!== "object") 

Ideelt sett bør typeof null ikke returnere "object"

Kapittelet om typer og grammatikk i You Don’t Know JS nevner:

Denne opprinnelige feilen i JS har vedvart i nesten to tiår, og vil sannsynligvis aldri bli fikset fordi det finnes så mye eksisterende nettinnhold som er avhengig av den feilaktige oppførselen, at det å „fikse“ feilen ville skape flere „feil“ og ødelegge mye nettprogramvare.

Relaterte artikler