# Variabelen

## Variant

Variabelen zijn kleine containers waarin u informatie kan bewaren. U kan de waarde van een variabele gebruiken door de naam op te geven. In tegenstelling tot de meeste programmeertalen kan een variabele eender welk datatype bevatten, zonder dat u het datatype op voorhand meedeelt. Elke variabele is van het type *variant*. Een variant is een variabele waarvan het datatype kan wijzigen in functie van de bewerking die erop wordt uitgevoerd.

```javascript
// Voorbeeld variant
var a = 7;      // a is een getal
a = "welkom";   // a is vanaf nu een string
```

Bij het declareren van de variabele a bevat a een waarde van het datatype getal. Op de tweede lijn verandert het datatype naar een string.

{% hint style="success" %}
★ Open **jsIntro/variabelen.html**.
{% endhint %}

Binnen de script-tag worden elf variabelen aangemaakt. Merk nogmaals op dat elk statement wordt afgesloten door een puntkomma.

```javascript
// De verschillende variabelen worden hier gedeclareerd
var getal1 = 17;
var getal2 = 3;
var string1 = 'dag'; 
var string2 = 'Jan'; 
var string3 = '17'; 
var string4 = '3'; 
var bool1 = true; 
var bool2 = false;
var ar1 = ['ma','di','wo']; 
var obj1 = new Object;
var var1;
var var2 = null;
```

## Soorten variabelen

De belangrijkste types van variabelen zijn strings, getallen, booleans en objecten.

* **Getallen** worden principieel nooit omsloten door aanhalingstekens. &#x20;

  Bv: 5, 3.14, 34e-2 (= 0.34), ...
* **Strings** worden altijd omsloten door enkele of dubbele aanhalingstekens. &#x20;

  Bv: `"tekst"`, `'tekst'`, `"5.4"`, ...
* **Booleaanse waarden** kennen twee toestanden: `true` (waar) of `false` (onwaar).
* **Objecten** komen later in dit hoofdstuk uitgebreid aan bod.  &#x20;

  Verder kent JavaScript nog `null` en `undefined`. &#x20;

  `undefined` indien de variabele gedeclareerd is, maar nog geen waarde heeft. &#x20;

  `null` staat voor een lege of onbestaande waarde. Door een variabele op `null` te zetten, wordt de variabele vernietigd.

Getallen plaatst men per definitie nooit tussen aanhalingstekens. Doet u dit toch, dan heeft dit soms invloed op het resultaat. Afhankelijk van de bewerking worden de variabelen immers automatisch omgezet naar het juiste datatype. Het +teken wordt bijvoorbeeld gebruikt om getallen op te tellen, maar ook om strings met elkaar te verbinden.

{% hint style="danger" %}
Let op: formuliervelden geven **ALTIJD** een **STRING** terug. Afhankelijk van de bewerking die volgt, kan het dus zijn dat je de uitgelezen waarde via [`parseInt()`](https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_parseint)of [`parseFloat()`](https://www.w3schools.com/jsref/jsref_parsefloat.asp) eerst moet omzetten naar een getal.
{% endhint %}

## Datatype controleren

Met `typeof()` kan u het datatype controleren. Voor bovenstaande variabelen geeft dit:

```javascript
typeof(getal1)  =   "number"
typeof(getal2)  =   "number"
typeof(string1) =   "string"
typeof(string2) =   "string"
typeof(string3) =   "string"
typeof(string4) =   "string"
typeof(ar1)     =   "object"    //een array is een object!
typeof(obj1)    =   "object"
typeof(bool1)   =   "boolean"
typeof(bool2)   =   "boolean"
typeof(var1)    =   "undefined"
```

{% hint style="danger" %}
Merk op dat een array geen eigen datatype heeft. Een array is in JavaScript een object. Hierover later meer.
{% endhint %}
