Nimen yhteentörmäys parametrien kanssa JavaScriptissä
Funktion parametrit ovat sen sisäisiä paikallisia muuttujia. Kutsukaamme funktion parametria samalla nimellä kuin ulkoista globaalia muuttujaa:
function func(num) {
console.log(num);
}
let num = 1;
func(num);
Tässä tapauksessa saamme tilanteen, jossa
funktion ulkopuolella on muuttuja num
ja funktion sisällä on muuttuja num.
Mutta nämä ovat eri muuttujat: muuttujan muuttaminen
funktion sisällä johtaa
funktion paikallisen muuttujan muuttamiseen.
Ja ulkoinen muuttuja funktion sisällä
on saavuttamaton eikä sitä voida
muuttaa millään tavalla. Tarkistetaan:
function func(num) {
num = 2; // muutetaan paikallista muuttujaa
}
let num = 1;
func(num);
console.log(num); // tulostaa 1 - mikään ei muuttunut
Päättele, without suorittamatta koodia, mitä tulostetaan konsoliin:
function func(num) {
num = 2;
}
let num = 1;
func(num);
console.log(num);
Päättele, without suorittamatta koodia, mitä tulostetaan konsoliin:
function func() {
num = 2;
}
let num = 1;
func();
console.log(num);
Päättele, without suorittamatta koodia, mitä tulostetaan konsoliin:
function func() {
let num = 2;
}
let num = 1;
func();
console.log(num);