Wywołanie funkcji w kodzie i w konsooli

0

Witam, nurtuje mnie zagadnienie w JS związane z funkcjami.
Dlaczego gdy wywołuję funkcję w "kodzie" w VSC:

const divideBy2 = function () {
    console.log(10 / 2);
    return 10 / 2;
}
divideBy2();

w konsoli pojawi się tylko wartość 5 z linijki z console.log, natomiast gdy wywołam bezpośrednio w konsoli dodatkowo zwróci mi jeszcze wartość 5 z return?
Pozdrawiam.

3

bo to co wpisujesz w konsoli jest wynik jest zwracany jak wpiszesz 1 + 1 do konsoli to otrzymasz 2. Wywołując kod z plików nic do konsoli nie wpisujesz.
U ciebie pierwsze jest console.log(10/2) a potem zwracane jest 5 w miejsce divideBy2() do konsoli, dlatego masz 2x 5

3

Większość tego typu konsol (nazywanych ogólnie REPL) automatycznie wypisuje zawartość ostatniego / aktualnie przetwarzanego wyrażenia - innymi słowy: przeglądarka niejako dorzuca console.log() automatycznie po to, aby uprościć Ci życie.

Tak jak zauważył @phanc: uruchamiając 1 + 1, nawet bez ręcznego console.log(), przeglądarka wyświetli Ci 2; uruchamiając console.log(1 + 1); przeglądarka wyświetli 2 (z console.log()) oraz undefined (które jest rezultatem działania console.log()).

1

Pisząc samo divideBy2() w VSC wykona się ta funkcja, której zadaniem jest wykonsolowanie piątki i zwrócenie piątki. Nie piszesz nigdzie, że to co zwraca też ma być wykonsolowane dlatego widzisz w konsoli tylko jedną piątkę. Jak zapisałbyś to tak console.log(divideBy2()) to wykonsolują ci się dwie piątki bo teraz konsolujesz to co zwróci funkcja i wykonuje się będący w funkcji console.log. Po prostu zamknieliśmy divideBy2() w console.log-u. Wyobraż sobie, że konsola sama w sobie jest takim console.log-iem a co zamkniesz w console.log-u się konsoluje.

0

Wszystko jasne, dziękuje Wam za poświęcony czas, pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1