Temat narodził się na grupie wsparcia, którą prowadzę na Facebooku. Postanowiłam podsumować to, co zostało powiedziane w ramach omówienia jednego z problemów. Myślę, że sporo osób na początku nauki JavaScriptu może stykać się z poniższymi kwestiami.

Funkcje w JavaScript

Funkcje w JavaScript możemy zdefiniować na kilka sposobów:

See the Pen [PL] Functions by Żaneta Jażdżyk (@nettecode) on CodePen.

Na początku najczęściej spotykacie się z pierwszą wersją (Function declaration). W rzeczywistości równie często jak nie częściej używa się drugiej („Anonymous” function expression).

To, co wprowadza ES6, czyli tak zwane „arrow functions” znacznie przyśpiesza sprawę, ale na starcie nie musicie się tym interesować. W większości tutoriali, kursów spotkacie się z pierwszym i drugim sposobem.

 

Return vs console.log()

Teraz tak: return zwraca wartość, wynik działania funkcji. Ale nie wypisuje go na konsoli. Za to odpowiada console.log().

See the Pen [PL] Return vs console.log by Żaneta Jażdżyk (@nettecode) on CodePen.

Więc jeśli mamy funkcję sum(a,b) to bez „ciała” tej funkcji:

return a + b;

nie wie co ma zrobić. Mimo, że nazywa się „sum” – nie zsumuje sama dwóch wartości.

 

Wbudowane obiekty

Oczywiście są funkcje, które będą wiedziały, co mają zrobić. W JavaScript’cie jest sporo takich wbudowanych obiektów z własnymi funkcjami i właściwościami.

MDN: Standard built-in objects

Jednym z takich obiektów jest np. Math

MDN: Standard built-in objects: Math

See the Pen [PL] Math built-in object by Żaneta Jażdżyk (@nettecode) on CodePen.

Jeśli chcesz coś sprawdzić na szybko…

Wygodnym sposobem jest wykorzystanie Dev Tools wbudowanych w każdą przeglądarkę.

Dla przykładu Chrome Dev Tools:

Jeśli szukasz narzędzia do pracy zapraszam do artykułu – IDE vs. edytor tekstowy. Krótki przegląd. Co na początek? 

Jeśli myślisz o nauce JavaScript – zapraszam do zadania wyzwania, które prowadzę – Ożyw swoją stronę z JavaScript 🙂

 

Znajomość tych wbudowanych funkcji, pewnych schematów, wzorców, sposobów odróżnia doświadczonego programistę od początkującego. Na starcie musisz się dużo naszukać, z czasem – pamiętasz. Albo wiesz, gdzie szukać 😉 Programowanie to w dużej mierze umiejętne szukanie, w odpowiednich miejscach, w odpowiedni sposób i po odpowiednich hasłach 😉 To wszystko przychodzi z czasem.

 

Jeśli na początku swojej nauki JavaScriptu spotykacie się z jakimiś problemami – zapraszam na grupę. Pomożemy 🙂 Powstała właśnie w tym celu.

 

Pytania? 🙂

  • Mateusz Chrustny

    Jakiś czas temu znajomy uczył się ReactJS, z zainteresowaniem słuchałem jakie są jego główne zalety i patrzyłem na kod który mi pokazywał. Jak dotychczas szerokim łukiem omijałem języki takie jak JS i PHP, jednakże tutaj przykuła moją uwagę jedna rzecz: dobrze rozwiązany problem dzielenia na moduły. Praktycznie od razu potrafiłem zrozumieć o co chodzi w czytanym kodzie, mimo że jest to zupełnie inny świat niż Java. To co mi najbardziej przeszkadzało w JavieScript kilka lat temu to ogromny wszechobecny bałagan, którego nie dało się ogarnąć wzrokiem. Duże pliki i skrypty i funkcje powrzucane bez ładu i składu. Wreszcie pojawiły się narzędzia typu webpack które pozwalają z ładnego, czystego modułowego kodu zrobić skompresowany *.min.js.. Wiem, że dla niektórych to nie jest nowość ale dla osoby która przez kilka lat szerokim łukiem omijała te technologie to miła zmiana. Teraz jest plan na najbliższe miesiące aby się nauczyć JavaScript, ReactJS , bardziej do swoich celów niż komercyjnych – ale nadal to ciekawe wyzwanie.

    • Bardzo ciekawe 😉 Sama właśnie wzięłam React’a na tapetę. Będę tworzyć z nim aplikację na konkurs „Daj się poznać”. Pewnie niedługo opublikuje pierwsze notatki z nauki, którą już co prawda zaczęłam, ale jak narazie mocno teoretycznie 🙂
      Tak, JS mocno się zmienił w ostatnich latach. W sumie początkowo nie chciałam w to wchodzić, w ogóle w Web. Nie żałuję, że wyszło inaczej. Choć czasami potrafi wkurzyć 😛 Zwłaszcza na początku. Ma trochę ciekawych „kwiatków”, do których trzeba się przyzwyczaić 😀 Widziałeś to może: https://www.destroyallsoftware.com/talks/wat ? 🙂