<p id="demo">Display the result here.</p>
function myFunction(name) {
return "Hello " + name;
}
document.getElementById("demo").innerHTML = myFunction("John");
Czemu parametr “name” jest powtarzany aż dwa razy?
I jeżeli myFunction(“John”) to słowo John gdzie jest jakby wpisywane tu function myFunction(name) czy tu return "Hello " + name;
Zapewne musisz to gdzieś wcześniej ustalić. Wziąłeś tylko wycinek kodu, prawdopodobnie umieszczony gdzieś w ramach przykładu, żeby coś wytłumaczyć - zgaduję.
Dokładnie też ci nie wytłumaczę, bo nigdy js się nie uczyłem, ale tutaj jest wszystko czytelne
Zacznij od nauki programowania w jakimś innym języku bo javascript nie jest najlepszym językiem do tego.
Odpowiadając na pytanie: dzieje się tak ze względu na zasięg zmiennych i to że argumenty funkcji są jakby deklaracją zmiennych. Natomiast konkretne wywołanie funkcji z podanymi argumentami jest inicjalizacją tych zmiennych.
W tym przykładzie bardziej zrozumiałe by było skąd bierze się zmienna “name” jakby kod wyglądał tak
function myFunction {
return "Hello" + name;
name = "John";
}
document.getElementById("demo").innerHTML = myFunction;
A tak po prostu nie wiem czemu “name” występuje dwa razy i skąd skrypt wie że słowo w nawiasie przy myFunction przy wywoływaniu funkcji to jest właśnie name.
Przecież tak to działa w każdym języku … oczywiście możesz mieć domyślną wartość dla argumentu/ów ale nie jest to w żadnym języku obligatoryjne. Oczywiście mówiąc wszystkie języki mam na myśli wszystkie popularne i w miarę używane, a nie jakieś dziwne twory.
Przecież taki zapis funkcji jest z grubsza taki sam jak w matematyce. Nie ma tu żadnej tajemnicy.
Matematycznie, np. funkcję liniową, możemy zdefiniować:
f(x) = ax + b, konkretnie np. f(x) = 2x + 3
f(x), w szkole zwykło się oznaczać “y”
Poźniej podstawiając jakąś wartość mamy, np. f(3) = 2x3 + 3 = 9
Dokładnie tak samo, co do zasady, definiuje się funkcje we wszystkich językach o składni pochodzącej z języka C (do których należy JS).
W podanym prez ciebie przykładzie jest tak samo:
y = f(x) = "Hello " + x … jest tym samym co … function myFunction(name) = "Hello " + name