Przetłumaczenie i wytłumaczenie działania kodu Javascript


(janusz_pro) #1

Witam

Zastanawiam się nad działaniem tego skryptu

 <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;


(krystian3w) #2

https://www.w3schools.com/js/js_functions.asp
http://www.kurshtml.edu.pl/js/function.html


(janusz_pro) #3

Właśnie się tam uczę ale nie nie wiem czemu name jest dwa razy skoro potem jeszcze podajemy ręcznie imię przy nazwie funkcji


(pocolog) #4

Funkcja jest wywołana z parametrem/zmienną ‘name’ na wejściu i wykorzystuje go później aby wyświetlić napis Hello i zawartość parametru ‘name’


(janusz_pro) #5

Rozumiem niby logiczne ale nadal nie do końca bo zrozumiałbym bardziej jakby zmienna name była określona gdzieś w kodzie np.

name = “John” ;

ale tutaj jest określona jedynie przy funkcji i skąd będzie wiadomo że John w nawiasie przy myFunction(“John”) odpowiada za name?


(pocolog) #6

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 :smiley:


(Fizyda) #7

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.


(Fizyda) #8

Jeśli to jest odpowiedź na pytanie:

To Ci powiem że niezależnie od języka programowania nie masz racji. Nie ma tutaj znaczenia Twoja znajomość JS.


(janusz_pro) #9

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.

tu cały skrypt https://www.w3schools.com/js/exercise.asp?filename=exercise_functions4 tylko trzeba kliknąć Show answer


(pocolog) #10

Chodziło mi o to, że pomimo zadeklarowania zmiennej, nie ma ona żadnej zawartości do wyświetlenia wewnątrz funkcji…


(Fizyda) #11

To co pokazałeś nie jest poprawne składniowo, poczytaj o tym czym są funkcje w programowaniu.

Jak nie ma żadnej wartości do wyświetlenia? Przecież ta “zmienna” to argument funkcji który musisz podać przy jej wywołaniu.


(pocolog) #12

No jeśli to się tak odbywa w js to ok. Już nic nie piszę :wink:


(Fizyda) #13

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.


(kowgli) #14

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

Wywołanie f(“John”) = "Hello " + “John” == “Hello John”