This article is currently in the process of being translated into Dutch (~99% done).
Truthy & Falsy
In de meeste programmeertalen, evenals in wiskunde, is het concept van waar en onwaar volledig binair: iets is waar, anders is het onwaar. Maar in JavaScript wordt het concept van waar en onwaar een beetje uitgebreid, omdat de taal over het algemeen vrij los is en niet zo strikt als andere programmeertalen.
In de praktijk betekent dit dat JavaScript soms iets evalueert als waar of onwaar, ondanks het feit dat het niet helemaal waar of onwaar is. Het doel is gewoon om de dingen makkelijker en minder ingewikkeld voor je te maken, maar als je dit niet weet, of als je het even vergeet, kan het een beetje verwarrend worden.
Dus, sta me toe om een nieuw concept voor je te introduceren: Truthy and Falsy. Ze bestaan alleen als concepten - u zult er geen trefwoorden voor vinden in JavaScript, en u zult ook niet kunnen controleren of ze waar of onwaar zijn. In plaats daarvan heeft JavaScript een tweede set operators geïntroduceerd om te controleren of iets helemaal waar of helemaal niet waar is. Dit worden strikte operators genoemd, b.v. de strikte gelijkheidsoperator, waarbij we drie gelijktekens gebruiken in plaats van twee, wanneer we twee waarden vergelijken.
We zullen het in een volgend hoofdstuk veel meer hebben over de verschillende operatoren van JavaScript, inclusief de strikte, maar laten we het nu hebben over wat als Truthy of Falsy kan worden beschouwd.
Truthy ( Waarheid )
In JavaScript zijn alle waarden Truthy ( waarheidsgetrouw ) tenzij ze specifiek Falsy (Vals) zijn. JavaScript zal type coercion gebruiken om iets te converteren naar een booleaanse waarde wanneer het gebruikt wordt in een context die dit vereist, zoals een lus of een if-instructie. Bekijk bijvoorbeeld de volgende voorbeelden van waarden die worden behandeld als waar omdat ze Truthy zijn:
if(true)
alert("truthy");
if(42)
alert("truthy");
if("hello world")
alert("truthy");
Als je dit voorbeeld uitvoert, zul je zien dat alle drie de if statements waar zijn, maar waarom is "hello world" waar? Omdat het een werkelijke waarde bevat en daarom zal JavaScript dit als waar beschouwen wanneer het gebruikt wordt in een context waar waar of onwaar vereist is.
Vals
In het algemeen worden alle waarden die ofwel null, ongedefinieerd of leeg zijn beschouwd als Falsy en daarom behandeld als false, wanneer ze worden gebruikt in een booleaanse context zoals lussen en if statements. Hier zijn een paar voorbeelden:
if(false)
alert("falsy");
if(null)
alert("falsy");
if(0)
alert("falsy");
if("")
alert("falsy");
Als je dit voorbeeld uitvoert, zul je merken dat geen van de waarschuwingen wordt getriggerd - alle bovenstaande if-statements worden in deze context als onwaar beschouwd.
Samenvatting
Als JavaScript wil dat iets waar of onwaar is, bijvoorbeeld bij het evalueren van de voorwaarde voor een lus of een if-statement, zal het indien nodig zijn toevlucht nemen tot typecoercie om waarden die geen echte booleans zijn om te zetten in waar of onwaar. Het resultaat hiervan wordt Truthy en Falsy genoemd, want hoewel ze niet echt waar of onwaar zijn, liggen ze er dicht genoeg bij voor JavaScript om er een beslissing op te baseren, zoals wordt geïllustreerd door de voorbeelden in dit artikel.