JavaScript Basis
Dit artikel legt de basisprincipes van JavaScript uit.
YouTube Video
Het uitvoeren van Hello World!
Overzicht van JavaScript
JavaScript is een van de meest gebruikte programmeertalen in webontwikkeling. Het wordt voornamelijk gebruikt om dynamische elementen aan webpagina's toe te voegen, waarmee gebruikersinterfaces kunnen worden gemanipuleerd, gegevensoverdracht mogelijk is, en animaties kunnen worden gemaakt. Het kan werken aan de client-side (in een browser) en aan de server-side met behulp van technologieën zoals Node.js. Vanwege zijn eenvoud en flexibiliteit is het gemakkelijk te leren voor beginners en wordt het veel gebruikt door professionele ontwikkelaars.
Variabelen in JavaScript
Variabelen in JavaScript zijn als containers die worden gebruikt om gegevens op te slaan en opnieuw te gebruiken. Door variabelen te gebruiken, kun je waarden in je programma behouden en manipuleren.
Declaratie van Variabelen
In JavaScript zijn er drie trefwoorden om variabelen te declareren.
var
: Een oude methode om variabelen te declareren, maar het handlen van de scope is complex en vereist voorzichtigheid. Het is gebaseerd op functiescope.
1var x = 10;
let
: Geïntroduceerd in ES6, is het een manier om variabelen met blokscope te declareren. Het kan worden hergebruikt maar kan niet opnieuw worden gedeclareerd binnen dezelfde scope.
1let y = 20;
const
: Gebruikt om variabelen te declareren die onveranderlijk zijn (constanten). Het heeft een blokscope en kan niet opnieuw toegewezen of hergedefinieerd worden na declaratie.
1const z = 30;
Scope
Variabelen hebben het concept van scope.
Globale Scope
1var globalVar = 'This is global'; // Global scope
2
3function accessGlobal() {
4 console.log(globalVar); // Able to access global variable
5}
6
7accessGlobal(); // Outputs "This is global"
- Globale scope-variabelen zijn overal toegankelijk. Variabelen gedeclareerd met
var
hebben een globale of functionele scope, maarlet
enconst
hebben een blokscope.
Blokscope
1if (true) {
2 let localVar = "This is a block-scoped variable";
3
4 // Accessible inside the brackets
5 console.log(localVar);
6}
7
8// Error: localVar cannot be used outside of this scope
9console.log(localVar);
-
Blokscope: Variabelen gedeclareerd met
let
ofconst
zijn alleen geldig binnen{}
(accolades). -
Er treedt een fout op bij toegang van buiten
{}
(accolades).
Functiescope
1function myFunction() {
2 var functionScoped = 'This is function scope';
3 // Accessible inside the function
4 console.log(functionScoped);
5
6 if (true) {
7 var functionVar = 'This is also function scope';
8 }
9 // functionVar can be used inside of the fucntion
10 console.log(functionVar);
11}
12
13myFunction(); // Outputs "This is function scope"
14
15// Error: functionScoped is not defined
16console.log(functionScoped);
-
Functiescope: Variabelen en functies die binnen een functie zijn gedefinieerd, kunnen niet van buiten de functie worden benaderd. Variabelen die binnen een functie met
var
worden gedeclareerd, behoren tot deze scope. -
In dit voorbeeld kan de variabele
functionVar
van buiten de{}
(accolades) worden benaderd, zolang deze zich binnen de functiescope bevindt. Aan de andere kant resulteert het benaderen van de variabelefunctionScoped
van buiten de functiescope in een fout.
Dus variabelen gedeclareerd met var
hebben alleen een functiescope en geen blokscope, wat het risico met zich meebrengt dat ze in onverwachte bereiken worden gebruikt. Het verdient de voorkeur om const
te gebruiken voor variabelen die niet veranderen en meestal let
te gebruiken, en het gebruik van var
zoveel mogelijk te vermijden.
Gegevenstypen
JavaScript-variabelen kunnen waarden van verschillende gegevenstypen opslaan. Er zijn string
voor het verwerken van tekst en number
voor het verwerken van numerieke waarden.
De belangrijkste gegevenstypen zijn als volgt:.
1// Number: Numeric type (integer and floating point number)
2let integerNumber = 42;
3let floatNumber = 3.14;
4console.log("Number (Integer):", integerNumber);
5console.log("Number (Float):", floatNumber);
6
7// String: String type
8let text = "Hello, JavaScript!";
9console.log("String:", text);
10
11// Boolean: Boolean type (true or false)
12let isJavaScriptFun = true;
13let isError = false;
14console.log("Boolean (true):", isJavaScriptFun);
15console.log("Boolean (false):", isError);
16
17// Null: Explicitly represents "nothing"
18let emptyValue = null;
19console.log("Null:", emptyValue);
20
21// Undefined: The default value assigned to an uninitialized variable
22let notDefined;
23console.log("Undefined:", notDefined);
24
25// Symbol: A data type for creating unique values
26let uniqueKey = Symbol("id");
27console.log("Symbol:", uniqueKey);
- Primitieve Typen:
number
: Verwerkt numerieke waarden (hele getallen en drijvende-kommagetallen).string
: Verwerkt reeksen van tekens.boolean
: Behandelt booleaanse waardentrue
offalse
.null
: Stelt expliciet een waarde van 'niets' voor.undefined
: Een waarde die automatisch wordt toegekend aan variabelen die niet zijn geïnitialiseerd.Symbol
: Een gegevenstype dat wordt gebruikt om unieke waarden te creëren.
1// Object: A data structure that holds multiple properties
2let person = {
3 name: "Alice",
4 age: 25,
5 isStudent: false
6};
7console.log("Object:", person);
8console.log("Object Property (name):", person.name);
9console.log("Object Property (age):", person.age);
10
11// Array: A list that holds multiple values
12let numbers = [10, 20, 30, 40];
13console.log("Array:", numbers);
14console.log("Array Element (index 0):", numbers[0]);
15
16// Function: A function object
17function greet(name) {
18 return "Hello, " + name + "!";
19}
20console.log("Function Output:", greet("Bob"));
21
22// Another way to define a function using arrow syntax
23let add = (a, b) => a + b;
24console.log("Arrow Function Output (3 + 5):", add(3, 5));
- Objecttypen:
Object
: Een datastructuur met meerdere eigenschappen.Array
: Een lijst die meerdere waarden bevat.Function
: Een functie-object.
Toekennen en hernoemen van variabelen
Variabelen gedeclareerd met let
of var
kunnen opnieuw toegewezen worden, maar const
kan niet opnieuw toegewezen worden zodra het is gedeclareerd.
1let score = 100;
2score = 150; // Correct
3
4const pi = 3.14;
5pi = 3.14159; // Error
Variabele Hoisting
In JavaScript is er een fenomeen waarbij variabelen naar de bovenkant van hun scope worden 'gehoisted'. Variabelen gedeclareerd met var
worden gehoisted, maar het gebruik van let
of const
vóór declaratie veroorzaakt een fout.
1console.log(a); // undefined
2var a = 10;
3console.log(a); // 10
- In dit geval worden variabelen gedeclareerd met
var
gehoist en worden hun waarden weergegeven.
1console.log(b); // ReferenceError
2let b = 20;
- Variabelen gedeclareerd met
let
worden niet gehoist, wat resulteert in een fout.
Correct gebruik van variabelen
Houd rekening met de volgende punten voor het correct gebruik van variabelen.
- Geef de voorkeur aan het gebruik van
const
en vermijd het gebruik vanvar
. - Volg conventies voor het benoemen van variabelen.
- Gebruik
camelCase
, zoalsuserName
oftotalPrice
. - Vermijd dubbelzinnige namen zoals
data
ofvalue
, en gebruik betekenisvolle namen om de leesbaarheid te verbeteren. - Een variabele naam mag niet beginnen met een nummer, dus namen zoals
1variable
zijn niet toegestaan.
- Gebruik
- Overmatig gebruik van globale variabelen kan scope-ambiguïteit veroorzaken en tot bugs leiden, dus vermijd het gebruik ervan waar mogelijk.
Samenvatting
var
: Een oude methode voor het declareren van variabelen met een functiescope.let
: Een block-gebaseerde variabele die opnieuw toegewezen kan worden.const
: Een block-gebaseerde variabele die niet opnieuw toegewezen kan worden (constant).- Het is belangrijk om variabelen te gebruiken volgens hun datatypes en rekening te houden met hun scope.
Wat zijn escape-tekens in JavaScript?
Escape-tekens zijn een methode om tekens met speciale betekenis weer te geven binnen gewone string-literals. In JavaScript worden escape-tekens geïntroduceerd met een backslash \
om speciale effecten toe te voegen aan een string of om controlekarakters op te nemen. Escape-tekens zijn handig voor het opnemen van elementen zoals nieuwe regels, tabs of aanhalingstekens in een string.
Voorbeelden van het gebruik van escape-tekens
Hieronder staan enkele voorbeeldcodes waarin escape-tekens worden gebruikt.
Dubbele en enkele aanhalingstekens escapen
Gebruik escape-tekens om dubbele of enkele aanhalingstekens in een string weer te geven.
1const singleQuote = 'It\'s a beautiful day!';
2console.log(singleQuote); // Output: It's a beautiful day!
3
4const doubleQuote = "He said, \"Hello there!\"";
5console.log(doubleQuote); // Output: He said, "Hello there!"
Backslashes escapen
Om een backslash zelf in een string op te nemen, escape deze met \
.
1const path = "C:\\Program Files\\MyApp";
2console.log(path); // Output: C:\Program Files\MyApp
Nieuwe regels en tabs escapen
Je kunt nieuwe regels en tabs invoegen om lange strings leesbaarder te maken.
1const multiline = "First line\nSecond line\nThird line";
2console.log(multiline);
3// Output:
4// First line
5// Second line
6// Third line
7
8const tabbed = "Column1\tColumn2\tColumn3";
9console.log(tabbed); // Output: Column1 Column2 Column3
Unicode-tekens escapen
Met Unicode-escape-volgordes kun je specifieke tekens weergeven met hexadecimale codes.
1const smiley = "\u263A"; // Copyright Mark
2console.log(smiley);
Notities
Overmatig gebruik van escapes kan de leesbaarheid schaden
Overmatig gebruik van escape-tekens kan de leesbaarheid van je code verminderen. Het is vooral belangrijk om escape-tekens verstandig te gebruiken in lange strings.
Overweeg het gebruik van template-literals
In JavaScript kun je met template-literals met backticks nieuwe regels of ingesloten expressies opnemen zonder escape-tekens.
1const message = `This is a message
2that spans multiple lines`;
3console.log(message);
4// Output:
5// This is a message
6// that spans multiple lines
Samenvatting
Escape-tekens zijn essentieel om speciale of controlekarakters binnen strings weer te geven. Door enkele of dubbele aanhalingstekens te escapen en nieuwe regels of tabs toe te voegen, kun je flexibelere strings maken. Overmatig gebruik van escape-tekens kan de code echter moeilijker leesbaar maken, dus overweeg het gebruik van template-literals waar nodig.
JavaScript-versies
JavaScript heeft een standaardspecificatie genaamd ECMAScript (ES). JavaScript heeft zich ontwikkeld op basis van deze standaard. Hieronder volgt een korte beschrijving van de belangrijkste versies.
-
ES3 (1999)
De eerste wijdverbreid geaccepteerde versie. Basis-syntaxis en functies werden vastgesteld.
-
ES5 (2009)
Introductie van
strict mode
, en nieuwe functies zoalsArray.prototype.forEach
,Object.keys
, enz. werden toegevoegd. -
ES6 / ES2015 (2015)
Er is een grote update aan JavaScript doorgevoerd. Veel functies die de basis vormen voor modern JavaScript, zoals
let
,const
,pijlfuncties
,klassen
,promises
,modules
, enz., werden geïntroduceerd. -
ES7 / ES2016 (2016)
Array.prototype.includes
en deExponentiation Operator (**)
werden toegevoegd. -
ES8 / ES2017 (2017)
async/await
werd geïntroduceerd, waardoor het eenvoudiger werd om asynchrone processen te schrijven. -
ES9 / ES2018 (2018)
Asynchrone iterators en
Rest/Spreidingseigenschappen
werden toegevoegd. -
ES10 / ES2019 (2019)
flatMap
enObject.fromEntries
werden toegevoegd. -
ES11 / ES2020 (2020)
Optional Chaining (?.)
en deNullish Coalescing Operator (??)
werden toegevoegd, waardoor code eenvoudiger en veiliger geschreven kan worden. -
ES12 / ES2021 (2021)
String.prototype.replaceAll
enPromise.any
, onder andere, zijn toegevoegd. -
ES13 / ES2022 (2022)
Array.prototype.at
en klasseprivate
velden (#field
), onder andere, zijn toegevoegd. -
ES14 / ES2023 (2023)
Array.prototype.toSorted
enSymbol.prototype.description
, onder andere, zijn toegevoegd. -
ES15 / ES2024 (2024)
Promise.withResolvers
voor eenvoudigerePromise
-beheer en aanpasbareArrayBuffer
, onder andere, zijn toegevoegd.
Huidig JavaScript wordt elk jaar bijgewerkt en nieuwe functies worden zelfs in de nieuwste versie toegevoegd.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.