Kategorie
Podstawy JavaScript

Typy danych w JavaScript

Typy danych w języku JavaScript to kategorie, do których można przypisać różne wartości, takie jak liczby, ciągi znaków, wartości logiczne itp. Każda wartość w języku JavaScript ma swój własny typ danych, który określa, jakie operacje można na niej wykonać i jakie wartości może ona przyjmować. Typy danych są ważne, ponieważ umożliwiają językowi JavaScript sprawdzanie poprawności wykonywanych operacji i zapobiegają błędom w działaniu programu.

W skrócie: Typy danych to kategorie nadające kontekst wartościom, które przechowujemy w zmiennych. Dzięki typom danych interpreter JavaScript wie co jest np. liczbą (typ number) i może wykonać operacje arytmetyczne takie jak np. dodawanie.

Popularne typy danych w JavaScript

Jakie typy danych występują w JavaScript?

Język JavaScript obsługuje następujące typy danych:

  • number – liczby całkowite i zmiennoprzecinkowe
  • string – ciągi znaków (tekst)
  • boolean – wartości logiczne true/false
  • null – oznaczenie braku wartości
  • undefined – oznaczenie braku zdefiniowanej wartości
  • object – obiekty złożone, takie jak tablice i obiekty

Ponadto, w języku JavaScript istnieje możliwość tworzenia niestandardowych typów danych, takich jak klasy i interfejsy, ale są to zagadnienia zaawansowane i nie są szeroko stosowane w praktyce.

// Typy danych w JavaScript:
// - number (liczby całkowite i zmiennoprzecinkowe)
// - string (ciągi znaków)
// - boolean (wartości logiczne true/false)
// - null (oznaczenie braku wartości)
// - undefined (oznaczenie braku zdefiniowanej wartości)
// - object (obiekty złożone, takie jak tablice i obiekty)

// Przypisanie wartości liczbowej do zmiennej
let age = 27;

// Przypisanie ciągu znaków do zmiennej
let name = "Piotr";

// Przypisanie wartości logicznej do zmiennej
let isTired = true;

// Przypisanie wartości null do zmiennej
let emptyValue = null;

// Przypisanie wartości undefined do zmiennej
let unassignedValue;

// Tworzenie obiektu (tablicy) i dodawanie elementów
let colors = ["red", "green", "blue"];
colors.push("yellow");

// Wyświetlanie zawartości zmiennych
console.log(age); // 27
console.log(name); // "Piotr"
console.log(isTired); // true
console.log(emptyValue); // null
console.log(unassignedValue); // undefined
console.log(colors); // ["red", "green", "blue", "yellow"]

Co to znaczy, że JavaScript jest typowany dynamicznie?

JavaScript jest językiem typowanym dynamicznie, co oznacza, że nie ma konieczności wyraźnego określania typów danych zmiennej przy jej deklaracji. Dzięki temu programiści mogą przypisywać różne wartości o różnych typach do tej samej zmiennej w trakcie działania programu. Język samodzielnie sprawdza, jakiego typu jest dana wartość i dokonuje wymaganych konwersji typów w czasie wykonywania programu.

Typowanie dynamiczne umożliwia większą elastyczność w pisaniu kodu, ale może prowadzić do błędów, jeśli nie zostanie odpowiednio zarządzane.

Poniżej znajduje się przykładowy kod JavaScript, który pokazuje, jak działa typowanie dynamiczne w tym języku:

// Deklaracja zmiennej bez określenia jej typu
let dynamicValue;

// Przypisanie liczby do zmiennej (typ number)
dynamicValue = 10;

// Wyświetlenie typu zmiennej
console.log(typeof dynamicValue); // "number"

// Przypisanie ciągu znaków do zmiennej (typ string)
dynamicValue = "Hello, world!";

// Wyświetlenie typu zmiennej
console.log(typeof dynamicValue); // "string"

// Przypisanie wartości logicznej do zmiennej (typ boolean)
dynamicValue = true;

// Wyświetlenie typu zmiennej
console.log(typeof dynamicValue); // "boolean"

// Przypisanie wartości null do zmiennej
dynamicValue = null;

// Wyświetlenie typu zmiennej
console.log(typeof dynamicValue); // "object"

W powyższym kodzie zmienna dynamicValue jest deklarowana bez określenia jej typu. Następnie przypisywane są do niej różne wartości o różnych typach, a jej typ jest wyświetlany przy pomocy funkcji typeof. Widać, że typ zmiennej zmienia się w zależności od przypisywanej wartości, co jest cechą typowania dynamicznego.

Operacje na wartościach w zależności typów danych

Jak już wspominałem wcześniej typy danych nadają kontekst w jakim dana zmienna (wartość) może zostać użyta. Poniższy kod przedstawia sytuację, w której wykonujemy operacje arytmetyczne (dodawanie) na wartościach o różnych typach danych.

// Deklaracja i definicja zmiennej (typ number)
let x = 5;

// Wyświetlenie typy zmiennej x
console.log(typeof x); // number

// Wykonanie operacji dodawania na zmiennej typu number
console.log(x+5); // 10

// Dynamiczna zmiana wartości zmiennej (typ string)
// info: wartości typu string są umieszczane w cudzysłowie
x = "5";

// Wyświetlenie typy zmiennej x
console.log(typeof x); // string

// Wykonanie operacji dodawania na zmiennej typu number
console.log(x+5); // 55

Powyższy kod demonstruje działanie typowania dynamicznego w języku JavaScript. W pierwszej linii kodu tworzona jest zmienna x i przypisywana jest do niej wartość liczbowa 5. Następnie wyświetlany jest typ tej zmiennej przy pomocy funkcji typeof i wykonywana jest na niej operacja dodawania.

Kolejne linie kodu pokazują, jak zmienna x może zmienić swój typ w trakcie działania programu. W linii 5 wartość zmiennej zostaje zmieniona na ciąg znaków „5”, co automatycznie zmienia jej typ na string. Następnie wykonywana jest na niej operacja dodawania, ale w tym przypadku wynik jest inny niż poprzednio, ponieważ operacja ta jest interpretowana inaczej dla typu string niż dla typu number. Wynikiem jest ciąg znaków „55”, a nie liczba 10.

Typy liczbowe i tekstowe

Ten przykład pokazuje, jak działa typowanie dynamiczne w języku JavaScript i jakie wyniki może ono przynieść.

O czym warto poczytać?

  1. Na czym polega konwersja typów? (wkrótce)
  2. Jak sprawdzić typ zmiennej w JavaScript?
  3. Typy danych przy operacjach porównania. (wkrótce)
  4. Czym różni się typowanie dynamiczne od twardego?