# Fouten lezen
Je hebt verschillende soorten foutmeldingen in Javascript, hier vinden jullie een overzichtje van enkele soorten en veel voorkomende foutmeldingen.
# TypeError
TypeError: Cannot read property 'yourProperty' of undefinedDit treedt op wanneer je probeert een eigenschap te lezen van een ongedefinieerde variabele of null.
const testArray = undefined; if (testArray.length) { console.log("There are items in your array!"); } console.log(nogEenNietBestaandObject.name);1
2
3
4
5
6
7Als je zeker bent dat je dit object toch aanmaakt en geen schrijffouten hebt gemaakt ligt de oorzaak meer dan waarschijnlijk bij de initialisatie.
TypeError: X is not a function.const x = 42; x(); // 42 is geen functie1
2TypeError: ‘undefined’ is not a functionDit wil zeggen dat je functie niet bestaat. Meer dan waarschijnlijk ligt de fout in de scope van je functie.function clearBoard() { alert("Cleared"); } document.addEventListener("click", function () { window.clearBoard(); });1
2
3
4
5
6
7TypeError: X is not iterableDit geeft aan dat je probeert te itereren over iets dat niet iterabel is.
const notIterable = 42; for (const item of notIterable) { console.log(item); }1
2
3
4TypeError: Cannot read property ‘length’Deze foutmelding spreekt voor zich, je probeert de propertylengthaan te spreken voor een niet-bestaande variabele. Dit kan bijvoorbeeld wanneer je als argument van een functie dezelfde naam gebruikt als de variabele.var testArray = ["Test"]; function testFunction(testArray) { for (var i = 0; i < testArray.length; i++) { console.log(testArray[i]); } } testFunction();1
2
3
4
5
6
7
8
9Je kan dit oplossen door geen parameter te definiëren en
testArrayals globale variable te gebruiken. Of doortestArraymee te geven als argument aan de functie.Uncaught TypeError: Cannot set property 'yourValue' of undefinedJe zal deze foutmelding krijgen wanneer je een property wil zetten van een niet bestaande/undefined variabele.const test = undefined; test.value = "Test";1
2TypeError: Cannot set property 'X' of null:const obj = null; obj.property = "value"; // Kan geen eigenschap instellen op 'null'1
2
# SyntaxError
SyntaxError: Unexpected token 'X'for (let i = 0; i < 5,; ++i) { console.log(i); } // Uncaught SyntaxError: expected expression, got ';'1
2
3
4Expected (ofMissing (Dit wilt meestal zeggen dat je een haakje bent vergeten.function example() { console.log('Hello, world'; } // Expected ( at the end of the console.log line1
2
3
4
# ReferenceError
Uncaught ReferenceError: 'yourEvent' is not definedDeze foutmelding wil zeggen dat je een variabele zal aanspreken die niet in jouw scope zit.console.log(variable); // ReferenceError: variable is not defined1function testFunction() { const test = "Test"; } console.log(test);1
2
3
4
5
# RangeError
Uncaught RangeError: Maximum call stack size exceededDeze foutmelding zal je krijgen wanneer je een recursieve functie aanspreekt die nooit lijkt te eindigen.function infiniteRecursion() { infiniteRecursion(); } infiniteRecursion();1
2
3
4const arr = newArray(1); function recurse(a) { a[0] = new Array(1); recurse(a[0]); } recurse(arr);1
2
3
4
5
6
7
8Het kan zich ook voordoen wanneer je een ‘out of range’ getal meegeeft aan bepaalde functies.
// Number.toExponential(digits) and Number.toFixed(digits) accept digits from 0 to 100, and Number.toPrecision(digits) accepts digits from 1 to 100. var a = new Array(4294967295); //OK var b = new Array(-1); //range error var num = 2.555555; document.writeln(num.toExponential(4)); //OK document.writeln(num.toExponential(-2)); //range error! num = 2.9999; document.writeln(num.toFixed(2)); //OK document.writeln(num.toFixed(105)); //range error! num = 2.3456; document.writeln(num.toPrecision(1)); //OK document.writeln(num.toPrecision(0)); //range error!1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# NetworkError
NetworkError: Failed to fetchfetch("https://nonexistent-url.com") .then((response) => response.json()) .catch((error) => console.error(error));1
2
3(unknown): Script errorDit heeft te maken met het inladen van externe bestanden of stukjes code. Stel dat je jouw JavaScript host op een CDN en je gaat daar een exception throwen dan zal je in plaats van betekenisvolle informatie over je error zelf deze Script error foutmelding krijgen. Dit is een beveiligingsmaatregel van de browsers, browsers laten niet alle communicatie toe tussen twee verschillende domeinen.