Hoe te controleren op ongedefinieerd in JavaScript

Wanneer een variabele wordt gedeclareerd zonder dat er een waarde is toegewezen, is de oorspronkelijke waarde undefined.

Hoe controleer je of een waarde undefined is in JavaScript?

Het korte antwoord

In moderne browsers kun je de variabele veilig vergelijken rechtstreeks naar undefined:

Sommige mensen pleiten tegen vergelijking met undefined omdat oude browsers toestonden dat de waarde ervan op deze manier opnieuw werd toegewezen:

Na die nieuwe toewijzing, in vergelijking met undefined zou niet langer correct detecteren of aan een variabele een waarde was toegewezen.

Dit gedrag werd echter in 2009 opgelost met ECMAScript 5:

In moderne browsers ” Het is niet langer mogelijk om de globale undefined waarde opnieuw toe te wijzen.

Wat moet ik doen als ik IE8 en ouder moet ondersteunen?

In het algemeen, direct vergelijken met un gedefinieerd is nog steeds veilig. Er is geen praktische reden voor een toepassing om de waarde van undefined opnieuw toe te wijzen.

Thomas Eding demonstreert dit met een overtuigende analogie:

Als u zich nog steeds zorgen maakt, zijn er twee manieren om te controleren of een waarde niet gedefinieerd is, zelfs als de globale undefined is overschreven.

U kunt de void-operator om de waarde van undefined te verkrijgen. Dit werkt zelfs als de globale window.undefined -waarde is overschreven:

De nul in dit voorbeeld heeft geen “speciale betekenis, je zou net zo goed 1 of function(){}. void(anything) evalueert altijd naar undefined.

U kunt ook de operator typeof gebruiken om veilig te controleren of een waarde kreeg toegewezen. In plaats van te vergelijken met de globale undefined waarde, controleer je of de waarde “s type” undefined “is:

Merk op dat dit enigszins verschilt van de vorige opties. Zelfs als name niet “niet werd verklaard” typeof zou nog steeds zeggen dat het “ongedefinieerd is”. Als je een niet-gedeclareerde variabele zou vergelijken met undefined of void(0), zou je in plaats daarvan een ReferenceError krijgen.

Maar niet gebruik void (0) direct

Vermijd het gebruik van void(0) of typeof x === "undefined" woordelijk in code. Deze uitdrukkingen “spreken niet voor zichzelf en zouden als volgt in een isUndefined-functie moeten worden verpakt:

Veel hulpprogramma-bibliotheken hebben deze functionaliteit al ingebouwd, er is bijvoorbeeld een _.isUndefined -functie in Underscore.js.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *