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.
