Twee variabelen verwisselen in JavaScript
Bij het schrijven van software is het soms nodig om de inhoud van twee variabelen a
en
b
te verwisselen. De klassieke mehode is met een hulpvariabele c
. De waarde
van a
wordt in c
gezet, a
wordt overschreven met
b
en b
krijgt de waarde van c
.
In JavaScript ziet dat er zo uit:
<script>
let a
, b
;
function Wissel(a
,b
) {
let c
= a
;
a
= b
;
b
= c
;
}
</script>
De function heeft geen return
-statement. Er wordt hier gebruik gemaakt van een side-effect, wat alleen
mogelijk is als de function Wissel(
a
,
b
)
binnen de scope van a
en b
is gedefinieerd.
JavaScript heeft een eenvoudiger mogelijkheid, waar geen side-effects voor nodig zijn:
<script>
let a
, b
;
[b
, a
] = [a
, b
];
</script>
Opmerking:
De JavaScript-benadering is mogelijk doordat JavaScript typeless is. Er is geen onderscheid tussen verschillende
data-typen zoals integer (geheel getal), real (gebroken getal) en string (tekst). Bij compileertalen zoals Pascal, Fortran
en C zou je voor elk datatype een aparte wisselprocedure, -subroutine of -function moeten schrijven. Dat is niet handig.
In de praktijk wordt vaak niet de inhoud van de variabelen verwisseld, maar verwisselt men de pointers naar de variabelen
(in feite de geheugenadressen). Dan volstaat één procedure, subroutine of function.
In feite doet de JavaScript-aanpak [b
, a
] = [a
,
b
] hetzelfde: pointers verwisselen.