code
JavaScript Basics - Podstawy programowania
Poznaj podstawy JavaScript - najbardziej popularnego języka programowania na świecie.
Od zmiennych i funkcji, przez DOM, aż po localStorage.
history
Czym jest JavaScript?
🌟 Najpopularniejszy język na świecie!
JavaScript powstał w 1995 roku, stworzony w zaledwie 10 dni przez Brendana Eicha.
Dziś to najważniejszy język programowania w ekosystemie webowym.
Gdzie działa JavaScript?
- Frontend - działa w każdej przeglądarce
- Backend - Node.js na serwerze
- Mobile - React Native, Ionic
- Desktop - Electron (VS Code, Slack)
⚠️ JavaScript ≠ Java
JavaScript NIE MA NIC wspólnego z Java!
| JavaScript |
Java |
| Język interpretowany |
Język kompilowany |
| Dynamicznie typowany |
Statycznie typowany |
| Głównie frontend |
Głównie backend |
| Lekki, elastyczny |
Silnie typowany, verbose |
To jak "Car" i "Carpet" - podobne nazwy, zupełnie różne rzeczy!
edit_note
Podstawy składni JavaScript
1. Zmienne - let i const
W JavaScript używamy let dla zmiennych, które mogą się zmieniać, oraz const dla stałych.
// let - zmienna, którą można nadpisać
let name = 'Jan';
name = 'Maria'; // OK
// const - stała, której NIE można nadpisać
const age = 25;
age = 26; // ❌ BŁĄD!
// ZAWSZE używaj const, chyba że musisz zmienić wartość
const PI = 3.14159;
let counter = 0;
counter++; // OK, bo let
2. Funkcje
Funkcje to bloki kodu, które można wielokrotnie wywoływać.
// Deklaracja funkcji
function greet(name) {
return `Witaj, ${name}!`;
}
// Wywołanie
console.log(greet('Maria')); // "Witaj, Maria!"
// Arrow function (nowoczesny sposób)
const greet2 = (name) => `Witaj, ${name}!`;
// Template strings (backticks)
const userName = 'Jan';
const message = `Witaj, ${userName}! Masz ${age} lat.`;
3. Tablice i metody
Tablice przechowują kolekcje danych. JavaScript ma potężne metody do pracy z tablicami.
const numbers = [1, 2, 3, 4, 5];
// map() - transformuje każdy element
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6, 8, 10]
// filter() - wybiera elementy spełniające warunek
const evenNumbers = numbers.filter(n => n % 2 === 0);
console.log(evenNumbers); // [2, 4]
// forEach() - wykonuje akcję dla każdego elementu
numbers.forEach(n => {
console.log(`Liczba: ${n}`);
});
// find() - znajduje pierwszy element spełniający warunek
const firstEven = numbers.find(n => n % 2 === 0);
console.log(firstEven); // 2
4. Warunki i pętle
// IF - ELSE
const age = 18;
if (age >= 18) {
console.log('Pełnoletni');
} else {
console.log('Niepełnoletni');
}
// FOR - pętla
for (let i = 0; i < 5; i++) {
console.log(`Iteracja ${i}`);
}
// WHILE - pętla
let count = 0;
while (count < 3) {
console.log(count);
count++;
}
web
DOM - Document Object Model
🌐 Co to jest DOM?
DOM to reprezentacja strony HTML w postaci drzewa obiektów.
JavaScript może manipulować DOM, zmieniając zawartość, styl i strukturę strony.
1. Wybieranie elementów
// Po ID
const title = document.getElementById('title');
// Po klasie (zwraca NodeList)
const buttons = document.getElementsByClassName('btn');
// Po selektorze CSS (NAJCZĘŚCIEJ UŻYWANE)
const firstButton = document.querySelector('.btn');
const allButtons = document.querySelectorAll('.btn');
2. Manipulacja zawartością
// Zmiana tekstu
title.textContent = 'Nowy tytuł';
// Zmiana HTML
title.innerHTML = '<strong>Pogrubiony tytuł</strong>';
// Zmiana atrybutu
title.setAttribute('class', 'active');
// Dodanie/usunięcie klasy
title.classList.add('highlighted');
title.classList.remove('active');
title.classList.toggle('visible');
3. Tworzenie i dodawanie elementów
// Tworzenie nowego elementu
const newParagraph = document.createElement('p');
newParagraph.textContent = 'To jest nowy akapit';
// Dodanie do strony
document.body.appendChild(newParagraph);
// Usunięcie elementu
newParagraph.remove();
touch_app
Zdarzenia (Events)
JavaScript to język event-driven - reaguje na zdarzenia użytkownika.
1. addEventListener - podstawa
const button = document.getElementById('myButton');
// Nasłuchiwanie na kliknięcie
button.addEventListener('click', () => {
console.log('Przycisk kliknięty!');
});
// Funkcja jako handler
function handleClick() {
alert('Kliknięto!');
}
button.addEventListener('click', handleClick);
2. Popularne zdarzenia
// Click - kliknięcie
element.addEventListener('click', () => { });
// Input - zmiana wartości inputu
input.addEventListener('input', (e) => {
console.log(e.target.value);
});
// Submit - wysłanie formularza
form.addEventListener('submit', (e) => {
e.preventDefault(); // Zatrzymaj domyślne zachowanie
// ... Twoja logika
});
// Keypress - naciśnięcie klawisza
document.addEventListener('keypress', (e) => {
console.log(`Naciśnięto: ${e.key}`);
});
// DOMContentLoaded - strona załadowana
document.addEventListener('DOMContentLoaded', () => {
console.log('DOM gotowy!');
});
3. Event object
button.addEventListener('click', (event) => {
console.log(event.target); // Element, który wywołał zdarzenie
console.log(event.type); // Typ zdarzenia ('click')
event.preventDefault(); // Zatrzymaj domyślne zachowanie
event.stopPropagation(); // Zatrzymaj propagację
});
storage
localStorage - trwałe przechowywanie danych
localStorage pozwala zapisywać dane w przeglądarce, które pozostają nawet po odświeżeniu strony.
⚠️ Ważne!
localStorage przechowuje tylko stringi. Aby zapisać obiekty lub tablice,
musisz użyć JSON.stringify() i JSON.parse().
1. Podstawowe operacje
// Zapis
localStorage.setItem('userName', 'Jan');
// Odczyt
const name = localStorage.getItem('userName');
console.log(name); // 'Jan'
// Usunięcie
localStorage.removeItem('userName');
// Wyczyszczenie wszystkiego
localStorage.clear();
2. Zapisywanie obiektów i tablic
// Obiekt do zapisania
const user = {
name: 'Jan',
age: 25,
email: 'jan@example.com'
};
// ❌ ŹLE - zapisze [object Object]
localStorage.setItem('user', user);
// ✅ DOBRZE - konwersja na JSON string
localStorage.setItem('user', JSON.stringify(user));
// Odczyt i parsowanie
const savedUser = JSON.parse(localStorage.getItem('user'));
console.log(savedUser.name); // 'Jan'
3. Przykład: Zapisywanie listy zadań
let tasks = [];
// Funkcja zapisu
function saveTasks() {
localStorage.setItem('tasks', JSON.stringify(tasks));
}
// Funkcja wczytania
function loadTasks() {
const tasksJSON = localStorage.getItem('tasks');
return tasksJSON ? JSON.parse(tasksJSON) : [];
}
// Użycie przy starcie aplikacji
document.addEventListener('DOMContentLoaded', () => {
tasks = loadTasks();
renderTasks();
});
construction
Praktyczny przykład - Kompletna mini-aplikacja
Prosty licznik z zapisem do localStorage:
<!-- HTML -->
<h1 id="counter">0</h1>
<button id="increment">+1</button>
<button id="decrement">-1</button>
<button id="reset">Reset</button>
<!-- JavaScript -->
<script>
let count = 0;
const counterEl = document.getElementById('counter');
// Wczytaj stan z localStorage
function loadCount() {
const saved = localStorage.getItem('count');
return saved ? parseInt(saved) : 0;
}
// Zapisz stan
function saveCount() {
localStorage.setItem('count', count);
}
// Aktualizuj wyświetlanie
function updateDisplay() {
counterEl.textContent = count;
saveCount();
}
// Przyciski
document.getElementById('increment').addEventListener('click', () => {
count++;
updateDisplay();
});
document.getElementById('decrement').addEventListener('click', () => {
count--;
updateDisplay();
});
document.getElementById('reset').addEventListener('click', () => {
count = 0;
updateDisplay();
});
// Inicjalizacja
document.addEventListener('DOMContentLoaded', () => {
count = loadCount();
updateDisplay();
});
</script>
arrow_forward
Następne kroki
🎯 Teraz czas na praktykę!
Poznałeś podstawy JavaScript. Teraz przejdź do projektu Task Manager,
gdzie wykorzystasz wszystkie te koncepcje w praktyce.