Nie udało się odświeżyć ustawień pisania. Załaduj stronę ponownie, aby spróbować jeszcze raz.
Ćwiczenie pisania bezwzrokowego: Programowanie w języku JavaScript
Zasady obliczania dokładności zmieniły się. Ćwiczenie zaczyna się od początku.
Nie udało się potwierdzić zapisu ukończonego ćwiczenia. Spróbuj zapisać je ponownie. Nie musisz jeszcze raz przepisywać tekstu.
Ćwiczenie pisania bezwzrokowego: Programowanie w języku JavaScript
Pisanie bezwzrokowe jest istotne w programowaniu. Korzystając z technik szybkiego pisania, sprawniej tworzysz kod w języku programowania JavaScript.
Programowanie w JavaScript i pisanie bezwzrokowe
JavaScript jest jednym z najczęściej używanych języków programowania na świecie - napędza aplikacje po stronie klienta i serwera. To język elastyczny, dynamiczny, stale rozwijany. Pisanie kodu w JavaScript ma jednak swoje trudności. JavaScript wyznacza bloki kodu klamrami, a Python wykorzystuje do tego wcięcia. W przeciwieństwie do statycznie typowanej Javy JavaScript jest językiem dynamicznie typowanym. Brak średnika, dodatkowy przecinek lub zapomniany nawias mogą zaburzyć działanie programu. Dla programistów, którzy spędzają wiele godzin dziennie przy klawiaturze, biegłość w pisaniu ma ogromne znaczenie. Podczas ćwiczeń pisania bezwzrokowego uczysz się wpisywać kod dokładnie, bez spoglądania na klawiaturę. Dzięki temu podczas pracy możesz skupić się na logice programu zamiast na szukaniu poszczególnych klawiszy.
Dynamiczne typowanie i deklaracje zmiennych
JavaScript jest językiem dynamicznie typowanym, co oznacza, że zmienne mogą przechowywać dowolne wartości i zmieniać typ w czasie wykonywania programu. Ta elastyczność ułatwia start, ale jest też źródłem wielu błędów. Nowe zmienne najczęściej deklaruje się za pomocą let i const; obie deklaracje mają zasięg blokowy. Zmiennej zadeklarowanej przez let można przypisać nową wartość, natomiast deklaracja const nie pozwala na ponowne przypisanie. var nadal jest poprawną konstrukcją: var ma zasięg funkcji, skryptu lub modułu. Literówka lub użycie niewłaściwego słowa mogą prowadzić do trudnych do wykrycia błędów. Podczas ćwiczeń pisania bezwzrokowego możesz trenować dokładne wpisywanie const i let. Wybór właściwego słowa kluczowego zależy od sposobu wykorzystania zmiennej w programie.
// Użycie let dla zmiennych zmieniających się w czasie
let counter = 0;
counter++;
// Użycie const dla wartości stałych
const PI = 3.14159;
// Unikaj var we współczesnym kodzie
var legacy = "stary styl";
Średniki i automatyczne wstawianie
Jedną z najbardziej kontrowersyjnych cech JavaScript jest automatyczne wstawianie średników (automatic semicolon insertion). Technicznie wiele instrukcji może być zapisanych bez średników, ale ich pominięcie może prowadzić do dziwnych błędów. Klasyczny przykład to instrukcja return, w której wartość jest podana w następnej linii - JavaScript interpretuje to jako return;, zwracając undefined. Zwracane wyrażenie musi zaczynać się w tym samym wierszu co return; samo dopisanie średnika nie rozwiąże tego problemu. Niektóre zasady stylu wymagają średników, a inne zalecają ich pomijanie, dlatego stosuj konwencję przyjętą w projekcie. Podczas ćwiczeń pisania bezwzrokowego możesz wyrobić sobie nawyk wpisywania średników zgodnie z przyjętym stylem. Zwracaj też uwagę na to, gdzie instrukcja rzeczywiście się kończy.
// Niebezpieczne: zwraca undefined
function bad() {
return
{
name: "Ala"
};
}
// Poprawne: średnik zapewnia właściwy zwrot
function good() {
return {
name: "Ala"
};
}
Obiekty i składnia JSON
JavaScript opiera się na obiektach. Tworzenie literałów obiektowych wymaga nawiasów klamrowych {}, dwukropków : i przecinków , w odpowiednich miejscach. JSON, który odzwierciedla składnię obiektów JavaScript, jest bezlitosny: zbędny przecinek na końcu czyni cały plik niepoprawnym. Dla programistów, którzy nie są biegli w używaniu znaków interpunkcyjnych, to ciągłe źródło błędów. Ćwiczenie pisania bezwzrokowego sprawia, że wpisywanie klamerek, dwukropków i przecinków staje się automatyczne, dzięki czemu umysł programisty pozostaje skupiony na strukturze danych, a nie na klawiszach.
// Literał obiektu
const user = {
id: 1,
name: "Ala",
active: true
};
Funkcje: deklaracje, wyrażenia i funkcje strzałkowe
JavaScript pozwala definiować funkcje na kilka sposobów: klasyczne deklaracje, wyrażenia anonimowe i funkcje strzałkowe. Te ostatnie szczególnie często korzystają z symbolu =>. Początkujący programiści często zapominają nawiasu lub stawiają strzałkę w złym miejscu. Pisanie bezwzrokowe ułatwia to, bo wpisywanie => staje się odruchem. Dodatkowo, JavaScript obsługuje parametry domyślne, parametry rest (...args) czy destrukturyzację listy parametrów. Daje to ogromną elastyczność, ale jednocześnie zwiększa liczbę znaków do precyzyjnego wpisania.
// Klasyczna funkcja
function greet(name) {
return "Cześć " + name;
}
// Funkcja strzałkowa
const greetArrow = (name) => "Cześć " + name;
// Funkcja z parametrem domyślnym i rest
function log(message = "Info", ...args) {
console.log(message, args);
}
Zamknięcia (closures) i callbacki
Jedną z cech charakterystycznych JavaScript są zamknięcia. Funkcje mogą przechwytywać zmienne ze swojego otoczenia. To przydatna możliwość, ale łatwo tu o błędy - zwłaszcza w pętlach lub kodzie asynchronicznym. Pisanie callbacków zwykle oznacza gniazdowanie nawiasów i klamerek. Gdy nie czujesz się pewnie podczas pisania na klawiaturze, łatwo o pomyłkę. Umiejętność pisania bezwzrokowego pomaga radzić sobie z takimi zagnieżdżeniami, bo palce wykonują powtarzalne sekwencje znaków w przewidywalny sposób.
// Closure przechwytujące zmienną
function makeCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
Kod asynchroniczny: callbacki, promisy, async/await
JavaScript obsługuje operacje asynchroniczne. Do ich obsługi służą callbacki, promisy i składnia async/await. Każda z tych konstrukcji ma swoje trudności przy pisaniu: callbacki oznaczają wiele poziomów klamerek, promisy można obsługiwać za pomocą łańcuchów .then() lub await, a async/await wprowadza nowe słowa kluczowe. Pisanie bezwzrokowe pomaga szczególnie tutaj, bo kod asynchroniczny często powtarza wzorce takie jak try { ... } catch(e) { ... } czy await fetch(...). Dokładne wpisywanie znaków pomaga unikać literówek i brakujących klamerek w tych konstrukcjach. Poprawność logiki asynchronicznej trzeba sprawdzić w samym programie.
// Wersja z Promise
fetch("/api/data")
.then(response => response.json())
.then(data => console.log(data))
.catch(err => console.error(err));
// Wersja z async/await
async function loadData() {
try {
const response = await fetch("/api/data");
const data = await response.json();
console.log(data);
} catch (err) {
console.error(err);
}
}
Styl i konwencje
Podczas gdy w Pythonie mówi się o kodzie zgodnym z idiomami języka ("pythonic"), w JavaScript dyskusje krążą wokół przewodników stylu takich jak Airbnb, StandardJS czy konwencje Google. Obejmują one wcięcia (dwie lub cztery spacje), użycie średników, konwencje nazewnicze (camelCase dla zmiennych, PascalCase dla klas) czy długość linii. Narzędzia takie jak ESLint i Prettier mogą sprawdzać styl kodu lub formatować go zgodnie ze swoimi ustawieniami. Pisanie kodu zgodnie z konwencjami jest dużo łatwiejsze dla osób opanowujących pisanie bezwzrokowe, bo zachowują rytm i precyzję, nawet przy wielokrotnie powtarzających się wzorcach jak funkcje strzałkowe czy łańcuchy metod.
Typowe pułapki w składni
Do najczęstszych błędów przy pisaniu JavaScript należą: brak zamknięcia szablonów tekstowych (template literals) zapisanych backtickiem, pomylenie pojedynczych i podwójnych cudzysłowów albo brak zamknięcia nawiasów. Szablony tekstowe ES6 z interpolacją ${...} są potężne, ale wymagają dokładnej sekwencji: backtick, znak dolara, nawiasy klamrowe. Dla osób mniej biegłych na klawiaturze bywa to uciążliwe. Pisanie bezwzrokowe czyni te sekwencje rutyną.
// Szablon tekstowy z interpolacją
const name = "Ala";
console.log(`Cześć, ${name}!`);
Klasy i paradygmat obiektowy
Przed ES6 JavaScript opierał się na prototypach. Dziś dostępna jest składnia klas, choć klasy nadal korzystają z dziedziczenia prototypowego. Metoda constructor inicjalizuje obiekt, ale nie trzeba definiować jej samodzielnie. Wywołanie super służy do uruchomienia konstruktora klasy nadrzędnej we własnym konstruktorze klasy pochodnej. Metody definiuje się bez słowa kluczowego function. Często popełnianym błędem jest zapomnienie o this albo zgubione nawiasy klamrowe. Ćwiczenia pisania bezwzrokowego pomagają wpisywać te powtarzające się konstrukcje płynnie i dokładnie. Podobnie jak w Javie, klasy w JavaScript zwykle zapisuje się w PascalCase, co również wymaga konsekwencji.
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name} wydaje dźwięk.`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name} szczeka.`);
}
}
Moduły i importy
Współczesny JavaScript korzysta z modułów ES z instrukcjami import i export. Często wiąże się to z długimi ścieżkami i klamrami. Wpisanie import { readFile, writeFile } from "fs"; szybko i poprawnie nie jest oczywiste dla początkujących. Pamięć mięśniowa rozwijana podczas ćwiczeń pisania bezwzrokowego ułatwia wpisywanie klamer i cudzysłowów, które często pojawiają się w instrukcjach importu.
import { readFile, writeFile } from "fs";
import express from "express";
Podsumowanie
JavaScript jest językiem dynamicznym, elastycznym i ekspresyjnym. Jego składnia łączy ogromną liczbę znaków - klamry, nawiasy kwadratowe, dwukropki, przecinki, średniki, backticki - co sprawia, że pisanie go poprawnie stanowi ciągłe wyzwanie. Podobnie jak Java, JavaScript rozróżnia wielkie i małe litery; brak znaku wymaganego przez składnię może uniemożliwić uruchomienie programu. W przeciwieństwie do Pythona nie wymusza wcięć, ale społeczność oczekuje spójnego formatowania. Pisanie bezwzrokowe pomaga programistom radzić sobie z tymi wyzwaniami: ogranicza błędy w interpunkcji, ułatwia wpisywanie powtarzających się konstrukcji (funkcji strzałkowych czy instrukcji importu), pozwala skupić się na projektowaniu programu zamiast na klawiaturze. Jeśli codziennie piszesz w JavaScript, ćwiczenia pisania bezwzrokowego mogą ułatwić dokładne wpisywanie kodu. Aby program działał prawidłowo, trzeba także rozumieć jego logikę i sprawdzać, jak zachowuje się po uruchomieniu.