Wanneer je een variabele of constante declareert, gebruik dan let
of const
en niét var
.
Wanneer een variable geen nieuwe waarde toegekend zal krijgen, verkies dan const
:
const userName = "Chris";
console.log(userName);
Zoniet, gebruik dan let
:
let age = 40;
age++;
console.log(age);
Het voorbeeld hieronder toont het gebruik van let
, terwijl er beter gekozen werd voor const
. Deze code werkt, maar dient vermeden te worden:
//fout
let userName = "Chris";
console.log(userName);
Het voorbeeld hieronder betreft het gebruik van const
, terwijl het een nieuwe deze een nieuwe waarde toegekend krijgt. De toekenning van de nieuwe waarde
gooit een error op:
//fout
const age = 40;
age++;
console.log("Happy Birthday!");
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie, verhoogt de leesbaarheid en gebruikt bovendien moderne JavaScript features.
//correct
let btnSubmit;
btnSubmit = document.getElementById("submit");
//fout
let submit;
submit = document.getElementById("submit");
Hieronder een niet-exhaustieve lijst van prefixes:
HTML-element | prefix |
---|---|
<div> |
div |
<h1>, <h2>, <h3>, ... |
hdg |
<input> |
inp |
<textarea> |
txa |
<button> |
btn |
<select> |
slc |
<input type="radio"> |
rdb |
<input type="checkbox"> |
ckb |
<table> |
tbl |
<section> |
sct |
<label> |
lbl |
<form> |
frm |
<a> |
anc |
... |
... |
Waarom?
Dit verhoogt de leesbaarheid van je code door duidelijk te maken dat de variabele verband houdt met de GUI.
Noteer steeds op de eerste lijn van je JavaScript-file dat in je in strict mode wil werken.
"use strict";
let definedVariable;
definedVariable = "this works";
undefinedVariable = "No var, let or const keyword used. Normally this would be allowed, but not in strict mode.";
Waarom?
Werken in strict mode verlaagt de kans op fouten. Wanneer een niet-gedeclareerde variabele wordt aangesproken in niet-strict mode, dan wordt er een
var
-variabele aangemaakt. Dit kan het debuggen soms onnodig vermoeilijken bij, bijvoorbeeld, tikfouten.
//correct
function printStudentInfo() {
let teacherName;
let studentName;
let divTitle;
teacherName = "Maxim";
studentName = "Bart";
divTitle = document.getElementbyId("title");
divTitle.textContent = studentName + " volgt les bij " + teacherName;
}
// ... eventueel ook correct
function printStudentInfo() {
const teacherName = "Maxim";
const studentName = "Bart";
const divTitle = document.getElementbyId("title");
divTitle.textContent = studentName + " volgt les bij " + teacherName;
}
//fout
function printStudentInfo() {
let teacherName;
teacherName = "Maxim";
let divTitle = document.getElementbyId("title");
let studentName;
studentName = "Bart";
divTitle.textContent = studentName + " volgt les bij " + teacherName;
}
Waarom?
Dit verhoogt de leesbaarheid.
- elke lijn JavaScript-code begint op een nieuwe lijn
- De openingsaccolade (
{
) van een block begint op dezelfde lijn van het statement in kwestie - de sluitende accolade (
}
) begint op een nieuwe lijn
//correct
function myFunc() {
console.log("Hello!");
};
//fout
function myFunc() { console.log("Hello!"); };
//ook fout
function myFunc()
{
console.log("Hello!");
};
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid van je code.
//correct
let tommyCat = "Said Tommy the Cat as he reeled back to clear whatever foreign "
+ "matter may have nestled its way into his mighty throat. Many a fat alley rat "
+ "had met its demise while staring point blank down the cavernous barrel of "
+ "this awesome prowling machine.";
//ook correct (met template literal)
let tommyCat = `Said Tommy the Cat as he reeled back to clear whatever foreign matter
may have nestled its way into his mighty throat. Many a fat alley rat had met its demise
while staring point blank down the cavernous barrel of this awesome prowling machine.`;
//fout
let tommyCat = "Said Tommy the Cat as he reeled back to clear whatever foreign matter may have nestled its way into his mighty throat. Many a fat alley rat had met its demise while staring point blank down the cavernous barrel of this awesome prowling machine.";
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid. Bij meer dan 80 karakters bestaat de kans dat je horizontaal moet beginnen scrollen.
//correct
if(dayOfWeek === 7 && weather === "sunny") {
goOnTrip("beach", "car", ["ice cream", "bucket and spade", "beach towel"]);
}
//fout
if(dayOfWeek===7&&weather==="sunny"){
goOnTrip("beach","car",["ice cream","bucket and spade","beach towel"]);
}
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid van je code.
//correct
alert("Hello world!");
//fout
alert("Hello world!")
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid van je code. Door een ; te noteren expliciteer je namelijk waar het statement eindigt.
//correct
function myFunc() {
// Output the string "Hello" to the browser's JS console
console.log("Hello");
// Create a new paragraph, fill it with content, and append it to the <body>
const para = document.createElement("p");
para.textContent = "My new paragraph";
document.body.appendChild(para);
}
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid van je code.
//correct
let playerScore = 0;
let speed = distance / time;
//fout
let thisIsaveryLONGVariableThatRecordsPlayerscore345654 = 0;
let s = d/t;
let ShouldBeLowerCamelCase = 0;
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid van je code.
Opmerking
Het is wel toegelaten om variabelenamen zoals
i
,j
, ... te gebruiken in lussen.
//correct
function sayHello() {
alert("Hello!");
}
//fout
function SayHello() {
alert("Hello!");
}
function notVeryObviousName() {
alert("Hello!");
}
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid.
//correct
let status = (age >= 18) ? "adult" : "minor";
//fout
let status = (age >= 18)
? "adult"
: "minor";
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid.
//liever dit ...
name === "Chris";
age !== 25;
//... dan dit
name == "Chris";
age != 25;
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie. Bovendien verlaagt dit problemen bij vergelijkingen waar geen rekening gehouden wordt met het datatype, vgl..:
"14" == 14
evalueert naartrue
, maar"14" === 14
evalueert naarfalse
.
//verkies dit ...
if(!isAdult) {
}
//... in plaats van dit ...
if(isAdult === false) {
}
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid.
//verkies dit ...
const myName = "Chris";
console.log(`Hi! I'm ${myName}!`);
//... in plaats van dit ...
const myName = "Chris";
console.log("Hi! I\'m " + myName + "!");
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid.
//correct
const text = "Hello to all you good people";
const para = document.createElement("p");
para.textContent = text;
//fout
const text = "Hello to all you good people";
const para = document.createElement("p");
para.innerHTML = text;
Waarom?
.textContent
is efficiënter en minder vatbaar voor fouten dan.innerHTML
. Bovendien kan.textContent
een XSS-aanval voorkomen.
//correct
let expression = "Papayas";
switch(expression) {
case "Oranges":
console.log("Oranges are $0.59 a pound.");
break;
case "Papayas":
console.log("Papayas are $2.79 a pound.");
break;
default:
console.log(`Sorry, we are out of ${expression}.`);
}
//fout
let expression = "Papayas";
switch(expression) {
case "Oranges":
console.log("Oranges are $0.59 a pound.");
break;
case "Papayas":
console.log("Papayas are $2.79 a pound.");
break;
}
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verlaagt de kans op fouten.
//verkies dit ...
function sum(a, b) {
return a + b;
}
//... boven dit
let sum = function(a, b) {
return a + b;
}
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid.
//correct
let myObject = {};
let myArray = [];
//fout
let myObject = new Object();
let myArray = new Array(length);
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie.
//correct
const pets = [];
pets.push("cat");
//fout
const pets = [];
pets[pets.length] = "cat";
Waarom?
Dit is in lijn met de Mozilla Developer Network's (MDN) documentatie en verhoogt de leesbaarheid.