Podstawy Java Script

JavaScript jest językiem programowania, który pozwala na tworzenie dynamicznych i interaktywnych stron internetowych. Choć początkowo służył do prostego manipulowania treścią stron to z biegiem lat ewoluował w pełnoprawny język, który pozwala na tworzenie skomplikowanych aplikacji webowych i nie tylko.

JavaScript został stworzony w 1995 roku przez Brendana Eicha dla firmy Netscape Communications. Język został opracowany w ciągu zaledwie kilku dni i pierwotnie nazwany Mocha, potem LiveScript, a ostatecznie przemianowany na JavaScript. Chociaż nazwa sugeruje pewne powiązania z językiem Java to oba języki mają niewiele ze sobą wspólnego. Wybór takiej nazwy był głównie chwytem marketingowym.

Dodanie kodu do strony

Skrypty JavaScript są uruchamiane przez przeglądarkę. Nie potrzebujemy przy tym dodatkowego oprogramowania, ani serwera. Do pisania kodu wystarczy zwykły notatnik lub bardzo fajny i szybki notepad++, który ma dodatkowo wbudowane kolorowanie składni. Przy zapisywaniu pliku należy mu nadać rozszerzenie .html lub .js (w zależności od tego czy piszemy w czystym JavaScript – js czy może osadzamy kod wewnątrz strony internetowej – html).

Wewnętrzny skrypt

Możesz umieścić kod JavaScript bezpośrednio w dokumencie HTML za pomocą tagu <script>.

<script>
    alert("Witaj na mojej stronie!");
</script>

Ten kod wyświetli okno dialogowe z wiadomością, gdy strona zostanie załadowana. Zazwyczaj takie skrypty umieszcza się w sekcji <head> lub na końcu ciała <body>, w zależności od tego, kiedy chcesz, aby skrypt został wykonany.

Zewnętrzny skrypt

Zamiast umieszczać kod bezpośrednio w pliku HTML, możesz odwołać się do zewnętrznego pliku JavaScript. Aby to zrobić, użyj atrybutu src w tagu <script>.

<script src="plik.js"></script>

Skrypty z opóźnieniem

Aby opóźnić wykonanie skryptu do momentu, gdy cała strona zostanie załadowana, możesz użyć atrybutu defer w tagu <script>.

<script src="skrypt.js" defer></script>

Skrypty asynchroniczne

Jeśli chcesz, aby skrypt był ładowany równolegle z innymi zasobami, ale nie chcesz czekać, aż cała strona zostanie załadowana możesz użyć atrybutu async.

<script src="skrypt.js" async></script>

Pamiętaj, że kolejność ładowania skryptów jest ważna – zwłaszcza gdy jeden skrypt zależy od innego. Jeśli skrypt B zależy od skryptu A upewnij się, że A jest ładowane przed B.

Debugowanie kodu

Debugowanie to proces identyfikowania, izolowania i naprawiania błędów lub problemów w kodzie programu. Jest to kluczowy element procesu tworzenia aplikacji internetowych. Pomaga w wykrywaniu, zrozumieniu i naprawianiu błędów w kodzie.

W trakcie debugowania możesz przeglądać bieżące wartości zmiennych oraz stos wywołań, aby zrozumieć, jakie funkcje zostały wywołane i w jakiej kolejności.

Konsola przeglądarki

Współczesne przeglądarki oferują rozbudowane narzędzia deweloperskie z konsolą, która pokazuje błędy, ostrzeżenia oraz umożliwia wykonywanie kodu w czasie rzeczywistym.

  • Microsoft Edge – skrót klawiszowy CTRL+SHIFT+I lub w menu po prawej: Więcej narzędzi -> narzędzia programistyczne
  • Google Chrome – skrót klawiszowy CTRL+SHIFT+I lub w menu po prawej: Więcej narzędzi -> narzędzia developerskie

Podobnie będzie w innych przeglądarkach. Dla JavaScript interesuje nas przede wszystkim sekcja Console.

Logowanie informacji

Najprostszą, ale niezwykle przydatną metoda śledzenia wartości zmiennych, przepływu kodu czy wyników funkcji jest użycie polecenia console.log

console.log("Wartość zmiennej x:", x);

Wynik wykonania tej instrukcji pojawi się w konsoli we wspomnianych narzędziach programistycznych.

Punkty przerwania – breakpoints

Wspomniane narzędzia deweloperskie umożliwiają ustawienie punktów przerwania (breakpoints) w kodzie, dzięki czemu można zatrzymać jego wykonywanie w dowolnym miejscu i przeanalizować wartości zmiennych oraz przejść krok po kroku przez kolejne linie. Możemy przykładowo zatrzymać na chwilę aplikację po naciśnięciu przycisku myszy.

Zatrzymanie aplikacji

Kiedy kod JavaScript napotyka instrukcję debugger; i narzędzia deweloperskie są otwarte, wykonanie kodu zostaje automatycznie zatrzymane, umożliwiając analizę bieżącego stanu.

Profilery

W narzędziach deweloperskich większości przeglądarek znajdują się profilery, które pozwalają analizować wydajność kodu, sprawdzając, jakie funkcje są wywoływane najczęściej oraz jak długo trwają ich wywołania.

Komentarze

Komentarze są ważnym elementem kodu, gdyż pozwalają programistom na dodawanie objaśnień lub opisów funkcjonalności. Mogą też być używane do tymczasowego wyłączania pewnych fragmentów kodu podczas debugowania lub testowania.

W JavaScript komentarze można dodawać w dwóch formach – jako komentarze jednolinijkowe lub wielolinijkowe.

  • Komentarze jednolinijkowe

Rozpoczynają się od dwóch ukośników // i trwają do końca linii.

// To jest komentarz jednolinijkowy
let x = 3;  // Komentarz po instrukcji
  • Komentarze wielolinijkowe

Rozpoczynają się od ukośnika i gwiazdki /* i kończą się gwiazdką i ukośnikiem */. Mogą obejmować wiele linii.

/* 
To jest komentarz
wielolinijkowy.
Obejmuje kilka linii tekstu.
*/
let y = 3;

Zmienne

Zmienne są jednym z najbardziej fundamentalnych elementów każdego języka programowania. W języku JavaScript, zmienne służą do przechowywania danych, które można potem używać i modyfikować w trakcie wykonywania programu. Stałe zaś to wartości, których nie można zmienić – inaczej program wyrzuci błąd.

Deklaracja zmiennej i stałej

W JavaScript można deklarować zmienne za pomocą słów kluczowych var lub let, a stałe za pomocą const. Zmienna deklarowana za pomocą var ma zasięg funkcji w której została utworzona lub globalny – jeśli została utworzona poza funkcją. Zmienne deklarowane za pomocą let i const mają zasięg blokowy co oznacza, że są dostępne tylko w obrębie bloku, w którym zostały zadeklarowane.

Warto zaznaczyć, że wpisywanie let przed nazwą zmiennej nie jest wymagane, ale zalecane.

var zmiennaGlobalna = "zmienna globalna";
let zmiennaLokalna = "wprowadzona w ES6";
innaZmiennaLokalna = "taki zapis jest możliwy, ale nie jest zalecany";
const STALA = "wartości";

Taki mały przykład używania zmiennych i stałych w programie:

var wylosowana = 5;
const PI = 3.14;
let liczba = 5;

if (true) {
  let liczba = 10;
  wylosowana = 10;
}

console.log("liczba:     " + liczba);
console.log("wylosowana: " + wylosowana);
console.log("PI:         " + PI);

Powyższy kod wyświetli:




Podstawowe typy danych

JavaScript jest językiem o dynamicznym typowaniu, co oznacza, że typ zmiennej jest określany w trakcie wykonywania programu.

  • Number – liczby całkowite, jak i zmiennoprzecinkowe
let wiek = 40; // liczba całkowita
let pi = 3.14; // liczba zmiennoprzecinkowa
  • BigInt (ES2020) – liczb większych niż 2^53 – 1, które są górnym limitem dla standardowego typu Number
let duzaLiczba = 1234567890123456789012345678901234567890n;
  • String (łańcuch znaków) – tekst
let napis = "Witaj, świecie!";
  • Boolean (wartość logiczna) – prawda (true) lub fałsz (false)
let prawda = true;
let falsz = false;
  • Object (obiekt) – złożone struktury danych i funkcji. W JavaScript obiekty służą do reprezentowania danych w postaci par klucz-wartość
let osoba = {
  imie: "Pioter",
  wiek: 50
};
  • Array (tablica) – specyficzny typ obiektu służący do przechowywania listy wartości w określonej kolejności
let owoce = ["jabłka", "banany", "pomarańcze"];
  • Undefined – wartość zmiennej, która została zadeklarowana, ale nie została jej przypisana żadna wartość, to undefined.
let niezdefiniowana;
console.log(niezdefiniowana);  // wyświetli "undefined"
  • Null – „brak wartości” lub „pusta wartość”. Różni się od undefined.
let pusta = null;

To oczywiście tylko niektóre z wielu obiektów i struktur dostępnych w JavaScript, a wiele dodatkowych jest dostarczanych przez różne środowiska wykonawcze (na przykład Node.js) lub biblioteki i frameworki (na przykład React, Vue).

Operatory

Operatory w JavaScript są symbolami używanymi do przeprowadzania operacji na zmiennych i wartościach.

  • Operatory arytmetyczne
let wynik = 3 + 3;  // dodawanie, wynik = 6
let wynik = 3 - 2;  // odejmowanie, wynik = 1
let wynik = 3 * 3;  // mnożenie, wynik = 9
let wynik = 12 / 3; // dzielenie, wynik = 4
let wynik = 10 % 3; // reszta z dzielenie, wynik = 1
let wynik = 3 ** 3; // potęgowanie (ES6), wynik = 27
  • Operatory inkrementacja i dekrementacji

Operatory te pozwalają na zwiększenie lub zmniejszenie wartości zmiennej o 1

let wiek = 40;
wiek++; // wiek = 41;

let jablka = 5;
jablka-- // jablka = 4;
  • Operatory porównania

Operatory pozwalające na porównanie dwóch różnych wartości

6 == 5 // 6 równa się 5 - fałsz
6 != 5 // 6 jest różne od 5 - prawda
6 > 5  // 6 jest większe od 5 - prawda
6 < 5  // 6 jest mniejsze od 5 - fałsz
6 >= 5 // 6 jest większe lub równe 5 - prawda
6 <= 5 // 6 jest mniejsze lub równe 5 - fałsz

5 === "5" // 5 jest identyczne jak tekst "5" (porównywany jest tu także typ danych) - fałsz
5 === 5   // 5 jest identyczne jak 5 - prawda
5 !== "5" // 5 nie jest identyczne jak tekst "5" - prawda
5 !== 5   // 5 nie jest identyczne jak 5 - fałsz
  • Operatory logiczne

Używane w różnych operacjach logicznych np. słoń == 'zwierzę' ORAZ słoń == 'ssak'

true && false - operator AND (oba warunki muszą być prawdziwe) - fałsz
true || false - operator OR (jeden z warunków musi być prawdziwy) - prawda
!true - operator NOT (zamienia wartość na przeciwną) - fałsz
  • Operator przypisania

Przypisuje jedną wartość innej

let x = 5; // pod zmienną x przypisaliśmy 5
let y = x; // pod zmienną y przypisaliśmy to co było w x (czyli 5)
  • Operator typeof

Pozwala sprawdzić czy wartość jest danego typu

let zwierze = "kot";
let typ = typeof zwierze; // pod zmienną typ znajdzie się "string"

To jest podstawowy przegląd operatorów dostępnych w JavaScript. Istnieje wiele innych bardziej zaawansowanych operatorów oraz technik, które można wykorzystać i o których wspomnimy zapewne później.

Instrukcje warunkowe

Instrukcje warunkowe w JavaScript umożliwiają wykonanie różnych akcji w zależności od różnych warunków. Są to podstawowe bloki, które sterują przepływem programu.

Instrukcja if

Najprostsza forma instrukcji warunkowej:

if (warunek) {
    // kod do wykonania, jeśli warunek jest prawdziwy
}

Przykład:

let liczba = 8;
if (liczba > 4) {
    console.log("Liczba jest większa od 4");
}

Instrukcja if...else

Pozwala dodać alternatywny blok kodu, jeśli warunek w if jest fałszywy.

if (warunek) {
    // kod do wykonania, jeśli warunek jest prawdziwy
} else {
    // kod do wykonania, jeśli warunek jest fałszywy
}

Przykład:

let liczba = 8;
if (liczba > 4) {
    console.log("Liczba jest większa od 4");
} else {
    console.log("Liczba nie jest większa od 4");
}

Instrukcja if...else if...else

Pozwala sprawdzać wiele warunków:

if (warunek1) {
    // kod do wykonania, jeśli warunek1 jest prawdziwy
} else if (warunek2) {
    // kod do wykonania, jeśli warunek2 jest prawdziwy
} else {
    // kod do wykonania, jeśli żaden z warunków nie jest prawdziwy
}

Przykład:

let liczba = 8;
if (liczba > 4) {
    console.log("Liczba jest większa od 4");
} else if (liczba == 4) {
    console.log("Liczba jest równa 4");
} else {
    console.log("Liczba jest mniejsza od 4");
}

Operator warunkowy

Skrócony sposób na zapisanie instrukcji if...else

warunek ? prawda : fałsz;

Przykład

let liczba = 8;
liczba > 4 ? console.log("Liczba jest większa od 4") : console.log("Liczba nie jest większa od 4");

Instrukcja switch

Używana, gdy potrzebujemy porównać wartość z wieloma możliwościami

switch(wartość) {
    case możliwość1:
        // kod do wykonania, gdy wartość równa się możliwość1
        break;
    case możliwość2:
        // kod do wykonania, gdy wartość równa się możliwość2
        break;
    // ... więcej przypadków ...
    default:
        // kod do wykonania, jeśli żadna z możliwości nie jest prawdziwa
}

Przykład

let kolor = "żółty";
switch (kolor) {
    case "czerwony":
        console.log("Kolor pomidora");
        break;
    case "niebieski":
        console.log("Kolor słońca");
        break;
    default:
        console.log("Nie znam tego koloru");
}

Pętle

Pętle w JavaScript umożliwiają wielokrotne wykonanie pewnego fragmentu kodu. Są one niezbędne, gdy chcemy powtarzać pewne operacje na danych lub wykonywać operacje do momentu spełnienia pewnego warunku.

Pętla for

Klasyczna pętla, która pozwala powtarzać blok kodu określoną liczbę razy.

for (inicjalizacja; warunek; aktualizacja) {
    // kod do wykonania w każdej iteracji
}

Przykład

for (let i = 1; i < 4; i++) {
    console.log(i);
}

Wykonanie powyższego kodu spowoduje wypisanie w konsoli liczb 1 2 3

Pętla while

Pętla ta powtarza kod tak długo, jak warunek jest prawdziwy.

while (warunek) {
    // kod do wykonania w każdej iteracji
}

Przykład

let i = 1;
while (i < 5) {
    console.log(i);
    i++;
}

Wykonanie powyższego kodu spowoduje wypisanie w konsoli liczb: 1 2 3 4

Pętla do...while

Podobna do pętli while, ale kod jest wykonywany przynajmniej raz, zanim zostanie sprawdzony warunek.

do {
    // kod do wykonania w każdej iteracji
} while (warunek);

Przykład

let i = 1;
do {
    console.log(i);
    i++;
} while (i < 5);

Wykonanie powyższego kodu spowoduje wypisanie w konsoli liczb: 1 2 3 4 5

Pętla for...of

Pętla służąca do iterowania przez elementy obiektu typu iterable, takiego jak tablice, napisy czy kolekcje.

for (const element of iterable) {
    // kod do wykonania dla każdego elementu
}

Przykład

let kolory = ['czerwony', 'żółty', 'niebieski'];
for (const kolor of kolory) {
    console.log(kolor);
}

Wykonanie powyższego kodu spowoduje wypisanie w konsoli: czerwony żółty niebieski

Pętla for...in

Pętla przeznaczona do iterowania przez właściwości (klucze) obiektu.

for (const klucz in obiekt) {
    // kod do wykonania dla każdego klucza
}

Przykład

let osoba = {imie: 'Maciej', wiek: 40};
for (const klucz in osoba) {
    console.log(klucz, osoba[klucz]);
}

Wykonanie powyższego kodu spowoduje wypisanie w konsoli imię Maciej wiek 40

Kontrola przepływu w pętlach

Wewnątrz pętli możemy użyć specjalnych instrukcji:

  • break – natychmiast przerywa pętlę.
  • continue – przeskakuje do następnej iteracji pętli.

Przykład

for (let i = 1; i < 80; i++) {

    if (i == 4) {
        continue; // pominie wartość 4 i przejdzie do kolejnej iteracji
    }
    if (i == 6) {
        break; // przerywa pętlę
    }
    console.log(i);
}

Wykonanie powyższego kodu spowoduje wypisanie w konsoli liczb: 1 2 3 5

Funkcje

Funkcje są jednym z podstawowych budulców w JavaScript. Pozwalają one na opakowanie fragmentu kodu w taki sposób, aby można go było wielokrotnie wywołać z różnych miejsc w programie. Dzięki funkcjom możemy organizować kod, dzielić go na mniejsze, bardziej zarządzalne części, oraz unikać powtarzania tego samego kodu.

Definicja funkcji

Funkcję definiuje się przy użyciu słowa kluczowego function, po którym następuje nazwa funkcji, a następnie zestaw parametrów w nawiasach.

function nazwaFunkcji(parametr1, parametr2, ...) {
    // ciało funkcji
}

Przykład

function powitaj(imie) {
    console.log("Cześć, " + imie + "!");
}

powitaj("Maciej");  // Wyświetli: "Cześć, Maciej!"

Parametry domyślne

Od ES6 w JavaScript można definiować wartości domyślne dla parametrów funkcji.

function powitaj(imie = "Pioter") {
    console.log("Cześć, " + imie + "!");
}

powitaj();  // Wyświetla: "Cześć, Pioter!"
powitaj("Maciej");  // Wyświetla: "Cześć, Maciej!"

Funkcje zwracające wartość

Funkcje mogą zwracać wartość, która następnie może być używana w programie. Do tego służy słowo kluczowe return.

function dodaj(a, b) {
    return a + b;
}

let suma = dodaj(4, 8);  // suma = 12

Funkcje jako wartości

W JavaScript funkcje są obiektami pierwszej klasy. Oznacza to, że funkcje mogą być przypisane do zmiennych, przekazywane jako argumenty do innych funkcji i zwracane jako wartości z funkcji.

const hello = function() {
    console.log("Hello!")
}

hello ();  // Wyświetli napis: "Hello!"

Funkcje strzałkowe (Arrow Functions)

Wprowadzone w ES6, funkcje strzałkowe oferują bardziej zwięzły sposób definiowania funkcji.

const dodaj = (a, b) => a + b;

console.log(dodaj(4, 8));  // Wyświetli: 12

Funkcje bez definicji

Są to funkcje, które są natychmiast wywoływane po ich zdefiniowaniu.

(function() {
    console.log("Natychmiast po definicji!");
})();

Obiekty

Obiekty w JavaScript reprezentują zbiory par klucz-wartość. Są one jednym z głównych budulców w języku i są używane do reprezentowania struktur danych, konfiguracji, a także tworzenia instancji opartych na prototypach.

Definicja obiektu

Obiekty składają się z właściwości („zmiennych”) i metod (funkcji)

let obiekt = {
    klucz1: 'wartość1',
    klucz2: 'wartość2',
    metoda1: function() {
        console.log(this.klucz1);
    }
};

W powyższym przykładzie, obiekt posiada dwa atrybuty (klucz1 i klucz2) oraz jedną metodę (metoda1). Metoda ta, kiedy zostanie wywołana, wyświetli wartość klucz1.

Dostęp do wartości obiektu

Można uzyskać dostęp do wartości obiektu za pomocą notacji kropki lub nawiasów kwadratowych.

console.log(obiekt.klucz1);  // wartość1
console.log(obiekt['klucz2']);  // wartość2

Wywołanie powyższych funkcji wyświetli napisy wartosc1 i wartosc2.

Dodawanie i modyfikowanie właściwości obiektu

obiekt.klucz3 = 'wartość3';
obiekt.klucz1 = 'nowa wartość1';

Tablice

Tablice są specjalnym typem obiektów służącym do przechowywania list wartości w określonej kolejności.

Definicja tablicy

let tablica = [1, "Maciej", 3.14];

Dostęp do elementów tablicy

Elementy tablicy są indeksowane liczbami, zaczynając od 0.

let tablica = [1, "Maciej", 3.14];
console.log(tablica[1]);  // element1

Wywołanie powyższego wyświetli napis Maciej.

Dodawanie i usuwanie elementów tablicy

let tablica = [1, "Maciej", 3.14];
tablica.push('kropek');  // dodaje element na końcu tablicy
console.log(tablica[3]);
tablica.pop();  // usuwa ostatni element tablicy

Wywołanie powyższego wyświetli napis kropek, a następnie usunie go z tablicy

Długość tablicy

Aby sprawdzić liczbę elementów w tablicy, używamy właściwości .length.

let tablica = [1, "Maciej", 3.14];
console.log(tablica.length);  // 3

Wywołanie powyższego wyświetli liczbę 3.

Operacje na obiektach i tablicach

Możemy iterować po tablicy za pomocą pętli np. for

for (let i = 0; i < tablica.length; i++) {
    console.log(tablica[i]);
}

albo forEach

tablica.forEach(function(element) {
    console.log(element);
});

JavaScript oferuje wiele funkcji i metod do pracy z tablicami.

// Dodaje jeden lub więcej elementów na końcu tablicy i zwraca nową długość tablicy.
push(element1, ..., elementN);

// Usuwa ostatni element z tablicy i zwraca go.
pop(); 

// Usuwa pierwszy element z tablicy i zwraca go.
shift();

// Dodaje jeden lub więcej elementów na początek tablicy i zwraca nową długość tablicy.
unshift(element1, ..., elementN); 

// Łączy dwie lub więcej tablic.
concat(value1, ..., valueN);

// Łączy wszystkie elementy tablicy w ciąg znaków.
join(separator);

// Wycina fragment tablicy i zwraca go jako nową tablicę.
slice(begin, [end]);

// Dodaje/usuwa elementy z tablicy.
splice(start, deleteCount, item1, ..., itemN);

// Wykonuje podaną funkcję dla każdego elementu tablicy.
forEach(callback(element, index, array), [thisArg]);

// Tworzy nową tablicę z wynikami wywołania podanej funkcji dla każdego elementu tablicy.
map(callback(element, index, array), [thisArg]);

// Tworzy nową tablicę z wszystkimi elementami, które przechodzą test określony w funkcji.
filter(callback(element, index, array), [thisArg]);

// Aplikuje funkcję na akumulator i każdy element tablicy (od lewej do prawej), aby zredukować ją do pojedynczej wartości.
reduce(callback(accumulator, currentValue, currentIndex, array), initialValue);

// Jak reduce, ale przetwarza od prawej do lewej.
reduceRight(callback(accumulator, currentValue, currentIndex, array), initialValue);

// Sprawdza, czy przynajmniej jeden element tablicy spełnia test określony w funkcji.
some(callback(element, index, array), [thisArg]);

// Sprawdza, czy wszystkie elementy tablicy spełniają test określony w funkcji.
every(callback(element, index, array), [thisArg]);

// Zwraca wartość pierwszego elementu w tablicy, który spełnia test określony w funkcji.
find(callback(element, index, array), [thisArg]);

// Zwraca indeks pierwszego elementu tablicy, który spełnia test określony w funkcji.
findIndex(callback(element, index, array), [thisArg]);

// Odwraca kolejność elementów tablicy.
reverse();

// Sortuje elementy tablicy.
sort([compareFunction]);

// Zwraca pierwszy indeks, w którym dany element można znaleźć w tablicy, lub -1, jeśli takiego elementu nie ma.
indexOf(searchElement, [fromIndex]);

// Zwraca ostatni indeks, w którym można znaleźć dany element w tablicy, lub -1, jeśli takiego elementu nie ma.
lastIndexOf(searchElement, [fromIndex]);

// Sprawdza, czy tablica zawiera określony element.
includes(searchElement, [fromIndex]);

// Wypełnia część tablicy jedną wartością.
fill(value, start, end);

// Kopiuje część tablicy do innej lokalizacji w tej samej tablicy.
copyWithin(target, start, [end]);

// Spłaszcza tablicę do określonej głębokości.
flat([depth]);

// Najpierw mapuje każdy element za pomocą funkcji mapującej, a następnie spłaszcza tablicę o jeden poziom.
flatMap(callback, [thisArg]);

// Sprawdza, czy podana wartość jest tablicą.
Array.isArray(value);

Inne przydatne funkcje i metody

Operacje na łańcuchach

// Zwraca znak w określonej pozycji.
charAt(position);

// Zwraca wartość Unicode znaku w określonej pozycji.
charCodeAt(position);

// Łączy dwa lub więcej ciągów znaków i zwraca nowy ciąg.
concat(string2, string3,..., stringX);

// Sprawdza, czy ciąg zawiera określony fragment; zwraca true lub false.
includes(searchString, position);

// Sprawdza, czy ciąg kończy się określonym fragmentem; zwraca true lub false.
endsWith(searchString, length);

// Zwraca indeks, w którym można znaleźć określony fragment w ciągu, lub -1, jeśli fragmentu nie ma.
indexOf(searchValue, fromIndex);

// Zwraca ostatni indeks, w którym można znaleźć określony fragment w ciągu, lub -1, jeśli fragmentu nie ma.
lastIndexOf(searchValue, fromIndex);

// Wyszukuje dopasowanie w ciągu za pomocą wyrażenia regularnego i zwraca wynik w postaci tablicy lub null.
match(regexp);

// Zwraca nowy ciąg znaków zawierający określoną liczbę kopii oryginalnego ciągu.
repeat(count);

// Zastępuje fragment ciągu innym fragmentem lub wynikiem funkcji.
replace(searchFor, replaceWith);

// Wyszukuje dopasowanie do wyrażenia regularnego w ciągu i zwraca indeks początku dopasowania lub -1.
search(regexp);

// Wycina fragment ciągu i zwraca go jako nowy ciąg.
slice(beginIndex, endIndex);

// Dzieli ciąg na tablicę podciągów na podstawie separatora.
split(separator, limit);

// Sprawdza, czy ciąg zaczyna się określonym fragmentem; zwraca true lub false.
startsWith(searchString, position);

// Zwraca fragment ciągu między dwoma indeksami.
substring(indexStart, indexEnd);

// Zwraca ciąg ze wszystkimi literami w formie małych liter.
toLowerCase();

// Zwraca ciąg ze wszystkimi literami w formie wielkich liter.
toUpperCase();

// Usuwa białe znaki z obu końców ciągu.
trim();

// Usuwa białe znaki z początku ciągu.
trimStart() lub trimLeft();

// Usuwa białe znaki z końca ciągu.
trimEnd() lub trimRight();

// Zwraca pierwotną wartość ciągu.
valueOf();

Funkcje matematyczne – obiekt Math

// Zwraca wartość bezwzględną liczby
Math.abs(number);

// Zaokrągla liczbę w górę do najbliższej liczby całkowitej
Math.ceil(number);

// Zaokrągla liczbę w dół do najbliższej liczby całkowitej
Math.floor(number);

// Zaokrągla liczbę do najbliższej liczby całkowitej
Math.round(number);

// Zwraca największą wartość z listy liczb
Math.max(numbers);

// Zwraca najmniejszą wartość z listy liczb
Math.min(numbers);

// Zwraca wartość liczby x podniesionej do potęgi y
Math.pow(x, y);

// Zwraca pierwiastek kwadratowy liczby
Math.sqrt(number);

// Zwraca sinus kąta (kąt w radianach)
Math.sin(angleInRadians);

// Zwraca cosinus kąta (kąt w radianach)
Math.cos(angleInRadians);

// Zwraca tangens kąta (kąt w radianach)
Math.tan(angleInRadians);

// Zwraca arcus sinus wartości (wynik w radianach)
Math.asin(number);

// Zwraca arcus cosinus wartości (wynik w radianach)
Math.acos(number);

// Zwraca arcus tangens wartości (wynik w radianach)
Math.atan(number);

// Zwraca arcus tangens dwóch zmiennych (y, x) (wynik w radianach)
Math.atan2(y, x);

// Zwraca e podniesione do potęgi argumentu
Math.exp(number);

// Zwraca logarytm naturalny (podstawa e) liczby
Math.log(number);

// Zwraca najbliższą liczbę całkowitą
Math.trunc(number);

// Zwraca losową liczbę między 0 a 1
Math.random();