Bu sayfada · 24 başlık
JavaScript Hakkında Bilmen Gereken 5 Temel Soru
Web sayfalarını etkileşimli, dinamik ve canlı hale getirmek; ayrıca Node.js ile sunucu (backend) tarafında kod çalıştırmak için kullanılır.
Tıklanınca açılan menüler, canlı sohbet uygulamaları, form doğrulamaları, React/Vue ile tek sayfalı web uygulamaları (SPA) ve backend API servisleri yapılır.
Tüm modern web tarayıcılarında istemci tarafında, Node.js ile bulut sunucularında, React Native ile mobilde kullanılır.
Tarayıcıların içinde yerleşik olarak çalışır (F12 Geliştirici Konsolu). Bilgisayarda sunucu tarafında çalıştırmak için nodejs.org’dan Node.js kurulur; VS Code ile yazılır.
Dünyanın en popüler ve yaygın programlama dilidir; hem frontend hem backend yazılabilen (Full-Stack) yegane evrensel dildir.
JavaScript ne için kullanılır?
Web sitelerine hareket ve etkileşim katmak
React, Vue gibi araçlarla modern web uygulamaları
Node.js ile sunucu tarafı programlama
React Native ile mobil uygulamalar
JavaScript hakkında kısaca
JavaScript, 1995 yılında Brendan Eich tarafından Netscape tarayıcısı için sadece 10 günde geliştirildi. Adında "Java" geçse de Java ile aynı dil değildir; isim o dönem Java popüler olduğu için pazarlama amacıyla seçildi. Tarayıcıda etkileşim geliştirmek için temel betik dilidir. Tarayıcılar ayrıca WebAssembly çalıştırabilir; diğer diller bu hedefe derlenebilir.
Artıları
- Hiçbir şey kurmadan tarayıcıda hemen çalışır.
- Hem web sitelerinin ön yüzünde hem de (Node.js ile) sunucuda kullanılır.
- Web arayüzlerinde kullanılır; iş fırsatları bölgeye, deneyime ve zamana göre değişir.
Eksileri
- Bazı kuralları tutarsızdır ve yeni başlayanları şaşırtabilir (
==ile===farkı gibi). - Sürekli yeni araç ve kütüphane çıktığı için takip etmesi yorucu olabilir.
Bilgisayarına nasıl kurulur?
Sayfadaki "Kendin dene" alanları için kurulum gerekmez. Kendi bilgisayarında çalışmak istediğinde bu adımları izle.
-
1
Kurulum gerekmez! Tarayıcında Cmd + Option + J (Mac) veya F12 (Windows) ile konsolu açıp kod yazabilirsin.
-
2
Web sayfası yazmak için VS Code kur. Bir
index.htmldosyası oluştur ve kodunu<script>etiketinin içine yaz:HTML<!DOCTYPE html> <html> <body> <script> console.log("Merhaba Dünya!"); </script> </body> </html> -
3
Dosyaya çift tıklayıp tarayıcıda aç, sonra konsolda sonucu gör.
-
4
JavaScript'i tarayıcı dışında çalıştırmak için Node.js kur.
Örneklerle adım adım öğren
Her derste kısa bir açıklama, kod ve kodun ekrana ne yazdığını göreceksin. " Kendin dene" ile kodu hemen değiştirip çalıştırabilirsin.
JavaScript Nerede ve Hangi Uygulamayla Çalıştırılır? (Kurulum ve Ayarlar)
JavaScript, bilgisayarında zaten yüklü olan internet tarayıcısında (Chrome, Firefox, Edge, Safari) ekstra hiçbir kurulum gerektirmeden doğrudan çalışır; sunucu tarafı için ise Node.js kurulur.
Tarayıcı Konsolu (F12 — Sıfır Kurulum)
Herhangi bir web sayfasında F12 tuşuna basıp "Console" sekmesine geçerek JavaScript kodlarını saniyeler içinde yazıp çalıştırabilirsin.
Aracı incele →VS Code + Live Server (Web Projeleri İçin)
HTML sayfasına <script defer src="app.js"></script> bağlayıp VS Code Live Server ile çalıştırdığında yaptığın her değişiklik anında tarayıcıya yansır.
Aracı incele →Node.js LTS (Terminalde Çalıştırmak İçin)
Tarayıcı açmadan doğrudan terminalde node app.js komutuyla JavaScript çalıştırmak ve npm paketlerini kullanmak için Node.js kurulur.
Aracı incele →JavaScript Kurarken Yapılması Gereken Kritik Ayarlar
-
✓
1. HTML İçine Doğru Bağlama (defer Ayarı)
JavaScript dosyasını HTML’e bağlarken <script defer src="app.js"></script> şeklinde defer niteliğini ekle; böylece HTML elemanları yüklenmeden JS çalışıp hata vermez.
-
✓
2. Node.js LTS Kurulumu
nodejs.org adresinden "LTS (Önerilen)" sürümü indirip kur. Kurulum otomatik olarak hem node çalışma motorunu hem de npm paket yöneticisini PATH’e ekler.
-
✓
3. VS Code ESLint / Prettier Ayarı
Yazım hatalarını ve unutulan parantezleri anında görmek için VS Code’da "ESLint" ve otomatik kod düzenleme için "Prettier" eklentisini etkinleştir.
İlk JavaScript Kodunu Çalıştırma Komutları:
# 1. Node.js ile terminalden doğrudan çalıştırma:
node -v
node app.js
# 2. Veya index.html içine bağlayarak tarayıcıda çalıştırma:
# <script defer src="app.js"></script>
Ekrana yazı yazdırma
console.log yazdığın şeyi tarayıcının konsol penceresine yazar. Satırlar genelde noktalı virgül ; ile biter.
console.log("Merhaba Dünya!");
▶ Sonuç
Merhaba Dünya!
Bu konuyu uygulayarak öğren
Metin ile çalışan kod arasındaki farkı görmek ve çıktıyı okuyabilmek.
Program, bilgisayarın izlediği talimatların belirli bir sözdizimiyle yazılmış hâlidir. İlk görevimiz ekrana bir bilgi yazdırmak. Metni tırnak içinde verdiğimizde onu bir değer olarak kullanırız; tırnak dışında kalan sözcük ise değişken veya komut adı olarak yorumlanabilir. Bu ayrımı anlamak sonraki örneklerde isim ve metni birbirine karıştırmanı önler.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Ekrana yazı yazdırma
Metin ile çalışan kod arasındaki farkı görmek ve çıktıyı okuyabilmek.
Kavramı kur
Program, bilgisayarın izlediği talimatların belirli bir sözdizimiyle yazılmış hâlidir. İlk görevimiz ekrana bir bilgi yazdırmak. Metni tırnak içinde verdiğimizde onu bir değer olarak kullanırız; tırnak dışında kalan sözcük ise değişken veya komut adı olarak yorumlanabilir. Bu ayrımı anlamak sonraki örneklerde isim ve metni birbirine karıştırmanı önler.
Neden böyle çalışıyor?
Çıktı, programın ne yaptığını gözlemlemenin en basit yollarından biridir. Çalıştırmadan önce kaç satır beklediğini ve her satırda ne yazacağını not et. Sonra gerçek çıktıyla karşılaştır. Hata mesajı görürsen sonuca atlamak yerine ilk hata satırını oku; eksik tırnak veya parantez çoğu zaman sonraki satırların da yanlış görünmesine neden olur.
Çalışma sırası
Yazdığın dosya ile çalıştırdığın dosyanın aynı olduğunu doğrula. Editördeki değişikliği kaydetmeden eski sürümü çalıştırmak çok yaygın bir başlangıç hatasıdır. Bu derste dış paket, hesap veya ağ bağlantısı gerekmez; yalnızca dilin temel çıktı mekanizmasını öğreniyoruz.
İkinci örnek · 1
İlk çıktı ifadesi bir metin değerini ekrana gönderir. Kodun tamamı yazılı derste bulunur.
Kod
console.log("İlk satır");
console.log("İkinci satır");Beklenen sonucu oku
Çıktı metnini değiştirmek ile komut adını değiştirmek aynı şey değildir.
Beklenen çıktı: İlk satır İkinci satır
Bir değeri sen değiştir
İlk mesajı kendi belirlediğin kısa bir cümleyle değiştir. İki ayrı çıktı ifadesi kullanarak iki satır oluştur.
Hata nereden gelir?
Metnin tırnağını unutmak, dilin o metni bir isim sanmasına neden olabilir; tırnak çiftini kontrol et.
Kendi çözümünü kur
Bir tırnağı bilinçli olarak kaldır; çıkan ilk hata mesajını not et, sonra hatayı düzelt. Önce çalışan kodun kopyasını tut. Yalnızca tırnak içindeki metni değiştirerek başla.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
console.log("Bugün başladım");
console.log("Yarın devam edeceğim");Kendini kontrol et
Bir metin değerinin çevresindeki tırnakları kaldırmak neden sorun çıkarabilir? Yanıt: Dil, sözcüğü metin yerine bir isim veya sözdizimi öğesi olarak yorumlayabilir; aynı anlama gelmez.
Beklenen çıktı: Bugün başladım Yarın devam edeceğim
Değişkenler: bilgiyi saklamak
Değişken, bir bilgiyi saklayan isimli bir kutudur. JavaScript'te değişkenler let ile oluşturulur. Yazıyı ters tırnakla yazıp içine ${isim} koyarak değişkeni yazının içinde kullanabilirsin.
let isim = "Ayşe";
let yas = 25;
console.log(`${isim} bu yıl ${yas} yaşında.`);
▶ Sonuç
Ayşe bu yıl 25 yaşında.
Bu konuyu uygulayarak öğren
Metin, sayı ve değişken adı arasındaki farkı açıklayıp basit bir hesap yapmak.
Değişken bir değere program içinde bir adla erişmemizi sağlar. Adın kendisi ile saklanan değer farklı şeylerdir: ürün adını değiştirince değişkenin adı değişmez. Anlamlı isimler kullanmak, birkaç satır sonra ne hesapladığını yeniden anlayabilmeni sağlar. Bir harf yerine fiyat veya adet gibi görevini anlatan isimlerle başla.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Değişkenler: bilgiyi saklamak
Metin, sayı ve değişken adı arasındaki farkı açıklayıp basit bir hesap yapmak.
Kavramı kur
Değişken bir değere program içinde bir adla erişmemizi sağlar. Adın kendisi ile saklanan değer farklı şeylerdir: ürün adını değiştirince değişkenin adı değişmez. Anlamlı isimler kullanmak, birkaç satır sonra ne hesapladığını yeniden anlayabilmeni sağlar. Bir harf yerine fiyat veya adet gibi görevini anlatan isimlerle başla.
Neden böyle çalışıyor?
Sayıya benzeyen bir metin her dilde kendiliğinden hesaplanabilir bir sayıya dönüşmez. "25" ile 25 arasındaki farkı düşün. Dillerin tür kuralları farklıdır; bu yüzden birleştirme ve toplamanın hangi operatörle yapıldığını örnek üzerinde izle. Formdan veya dosyadan gelen veriyi körlemesine sayısal kabul etme.
Çalışma sırası
Bir hesabı üç aşamaya böl: girdileri tanımla, sonucu hesapla, sonucu göster. Aynı sayıyı kodun farklı yerlerine kopyalamak yerine tek bir değişkene ad ver. Değeri değiştirip bütün hesabın aynı kurala göre güncellendiğini kontrol et; böylece kod ile sabit cevap arasındaki farkı görürsün.
İkinci örnek · 1
fiyat bir ürünün birim bedelidir; adet kaç tane alındığını belirtir. Kodun tamamı yazılı derste bulunur.
Kod
const fiyat = 25;
const adet = 3;
const toplam = fiyat * adet;
console.log("Toplam:", toplam);Beklenen sonucu oku
Çıktı ifadesinde hem açıklama hem sayısal sonuç bulunur.
Beklenen çıktı: Toplam: 75
Bir değeri sen değiştir
Fiyatı 25, adedi 3 yap; çalıştırmadan önce sonucu hesapla. Yalnızca adet değerini 0 yap; toplamın neden değiştiğini anlat.
Hata nereden gelir?
Hesabı yapmak yerine hazır 75 sayısını yazdırmak değişken kullanmayı öğretmez; sonuç girdilerden üretilmeli.
Kendi çözümünü kur
Bir indirim değişkeni ekle ve son tutarı toplam eksi indirim olarak hesapla. Değerleri değiştirirken hesap ifadesini aynı tut; aynı kuralın yeni girdilerle çalıştığını gör.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
const fiyat = 20;
const adet = 4;
const toplam = fiyat * adet;
console.log("Toplam:", toplam);Kendini kontrol et
Toplamı sabit 75 olarak yazmakla fiyat * adet kullanmak arasındaki fark nedir? Yanıt: Hesap ifadesi girdiler değiştiğinde yeniden doğru sonucu üretir; sabit 75 aynı kalır.
Beklenen çıktı: Toplam: 80
Koşullar: karar vermek
Program bir koşulu kontrol eder: koşul doğruysa ilk bloğu, değilse else bloğunu çalıştırır. Günlük hayattaki "eğer ... ise" cümlesinin aynısı. Koşul parantez ( ) içine, çalışacak kod süslü parantez { } içine yazılır.
let sicaklik = 30;
if (sicaklik > 25) {
console.log("Hava sıcak, şort giy!");
} else {
console.log("Hava serin, mont al.");
}
▶ Sonuç
Hava sıcak, şort giy!
Bu konuyu uygulayarak öğren
Koşulun sonucuna göre farklı akışlar çalıştırmak ve sınır değerleri test etmek.
Koşul, bir soruya doğru veya yanlış cevabı veren ifadedir. “Puan en az 50 mi?” gibi bir soruyu karşılaştırma operatörüyle yazarız. if doğruysa bir blok, else varsa yanlış durumda başka bir blok çalışır. Programın hangi yolu izleyeceğini girdiler belirler; metin olarak “doğru” yazdırmak koşulun kendisi değildir.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Koşullar: karar vermek
Koşulun sonucuna göre farklı akışlar çalıştırmak ve sınır değerleri test etmek.
Kavramı kur
Koşul, bir soruya doğru veya yanlış cevabı veren ifadedir. “Puan en az 50 mi?” gibi bir soruyu karşılaştırma operatörüyle yazarız. if doğruysa bir blok, else varsa yanlış durumda başka bir blok çalışır. Programın hangi yolu izleyeceğini girdiler belirler; metin olarak “doğru” yazdırmak koşulun kendisi değildir.
Neden böyle çalışıyor?
Karşılaştırmada sınır noktaları önemlidir. puan > 50 ile puan >= 50 aynı değildir: 50 değeri ilkinde dışarıda, ikincisinde içeridedir. Kuralı doğal dille yazıp koddaki işaretle eşleştir. Ardından sınırın bir altı, sınırın kendisi ve bir üstü için sonucu ayrı ayrı tahmin et.
Çalışma sırası
Bir örneğin tek bir değerle çalışması bütün olasılıkları kapsadığı anlamına gelmez. Küçük bir test tablosu yap: girdi, beklenen dal, gözlenen çıktı. Birden fazla koşul eklediğinde sıranın etkisini düşün; ilk doğru dal, sonraki dallara geçilmesini engelleyebilir. Her koşulun kapsadığı aralığı açık tut.
İkinci örnek · 1
puan karşılaştırmanın girdisidir. Kodun tamamı yazılı derste bulunur.
Kod
const puan = 50;
if (puan >= 50) {
console.log("Geçti");
} else {
console.log("Tekrar dene");
}Beklenen sonucu oku
Karşılaştırma değeri gözlemler; atama ile karıştırılmamalıdır.
Beklenen çıktı: Geçti
Bir değeri sen değiştir
49, 50 ve 51 değerleri için beklenen sonucu bir tabloya yaz. Karşılaştırmayı > yapıp yalnızca sınır değerde neyin değiştiğini kontrol et.
Hata nereden gelir?
Atama ile karşılaştırmayı karıştırmak programın anlamını değiştirebilir; operatörün dildeki görevini kontrol et.
Kendi çözümünü kur
80 ve üstü için ayrı bir mesaj ekle; en yüksek aralığı önce değerlendir. “En az” ifadesi eşitliği de kapsar. Teste yalnızca ortadaki değerle başlama.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
const puan = 49;
if (puan >= 50) {
console.log("Geçti");
} else {
console.log("Tekrar dene");
}Kendini kontrol et
“En az 50” kuralı için 50 puanı hangi dalda değerlendirilmelidir? Yanıt: Başarılı/geçerli dalda; kural eşitliği de kapsar. Bu nedenle uygun karşılaştırma >= 50 olur.
Beklenen çıktı: Tekrar dene
Döngüler: tekrar etmek
Aynı işi elle defalarca yazmak yerine döngü kullanırız. Bu örnek 1'den 3'e kadar sayar ve her seferinde bir satır yazar. sayi++ "sayıyı 1 artır" demek.
for (let sayi = 1; sayi <= 3; sayi++) {
console.log("Tekrar " + sayi);
}
▶ Sonuç
Tekrar 1 Tekrar 2 Tekrar 3
Bu konuyu uygulayarak öğren
Tekrarlanan bir işi döngüye dönüştürmek ve kaç tekrar oluştuğunu açıklamak.
Döngü aynı işi farklı değerler için tekrarlar. Her adımda kullanılan değişkene bakarak o anda hangi öğenin işlendiğini anlayabilirsin. Aynı çıktı satırını üç kez kopyalamak yerine döngü yazmak, tekrar sayısını ve veriyi tek bir yerden değiştirmeyi sağlar. Ancak tekrarın nerede duracağını açıkça belirlemelisin.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Döngüler: tekrar etmek
Tekrarlanan bir işi döngüye dönüştürmek ve kaç tekrar oluştuğunu açıklamak.
Kavramı kur
Döngü aynı işi farklı değerler için tekrarlar. Her adımda kullanılan değişkene bakarak o anda hangi öğenin işlendiğini anlayabilirsin. Aynı çıktı satırını üç kez kopyalamak yerine döngü yazmak, tekrar sayısını ve veriyi tek bir yerden değiştirmeyi sağlar. Ancak tekrarın nerede duracağını açıkça belirlemelisin.
Neden böyle çalışıyor?
Başlangıç, devam koşulu ve ilerleme adımını birbirinden ayır. Bitiş değeri bazı yapılarda dahil, bazılarında hariçtir. Sözdizimini ezberlemek yerine 1, 2, 3 gibi küçük bir örneği elde izle. Her tekrarda değişkenin değerini, üretilen çıktıyı ve bir sonraki değeri tabloya yaz.
Çalışma sırası
Toplama gibi görevlerde döngü boyunca birikim tutan bir değişken kullanılır. Başlangıç değeri genellikle toplama için 0 olur. Bu değişkeni her turda yeniden sıfırlarsan önceki sonuçları kaybedersin. Başlangıç hazırlığını döngünün dışında, tekrar eden hesabı döngünün içinde düşün.
İkinci örnek · 1
toplam döngü başlamadan önce hazırlanır. Kodun tamamı yazılı derste bulunur.
Kod
let toplam = 0;
for (let sayi = 1; sayi <= 3; sayi++) {
toplam += sayi;
}
console.log(toplam);Beklenen sonucu oku
Son çıktı döngüden sonra yalnızca bir kez yazdırılır.
Beklenen çıktı: 6
Bir değeri sen değiştir
1, 2 ve 3 sayılarının toplamını beklenen sonuçla karşılaştır. Tekrar aralığını 1–5 yap; toplamın 15 olduğunu doğrula.
Hata nereden gelir?
Bitiş sınırını dahil/hariç karıştırmak bir eksik veya fazla tekrar üretir; ilk ve son değeri kontrol et.
Kendi çözümünü kur
Döngü içinde hem sayi hem ara toplamı yazdırarak hesabın nasıl biriktiğini incele. Ara toplamı kaydetmek, hangi turda hata yaptığını görmeni sağlar.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
let toplam = 0;
for (let sayi = 1; sayi <= 5; sayi++) {
toplam += sayi;
}
console.log(toplam);Kendini kontrol et
Biriken toplamı her döngü turunda 0 yapmak neden yanlıştır? Yanıt: Önceki turlardaki birikimi siler; toplam yalnızca son turun katkısını tutar.
Beklenen çıktı: 15
Fonksiyonlar: kodu tekrar kullanmak
Fonksiyon, bir işi yapan ve bir isim verdiğin kod parçasıdır. Bir kere yazarsın, istediğin kadar çağırırsın. JavaScript'te fonksiyonlar function ile başlar.
function selamla(isim) {
return "Merhaba " + isim + "!";
}
console.log(selamla("Mehmet"));
▶ Sonuç
Merhaba Mehmet!
Bu konuyu uygulayarak öğren
Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.
Fonksiyon bir işi adlandırır ve tekrar kullanılabilir hâle getirir. Parametre, iş yapılırken değişmesini istediğin girdinin adıdır. Fonksiyonu çağırırken gerçek değeri argüman olarak verirsin. Böylece aynı hesap kuralını farklı sayılarda yeniden yazmadan kullanabilirsin; hesap bir yerde tanımlanır, birçok yerde çağrılır.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Fonksiyonlar: kodu tekrar kullanmak
Parametre alan ve değer döndüren bir fonksiyonu farklı girdilerle kullanmak.
Kavramı kur
Fonksiyon bir işi adlandırır ve tekrar kullanılabilir hâle getirir. Parametre, iş yapılırken değişmesini istediğin girdinin adıdır. Fonksiyonu çağırırken gerçek değeri argüman olarak verirsin. Böylece aynı hesap kuralını farklı sayılarda yeniden yazmadan kullanabilirsin; hesap bir yerde tanımlanır, birçok yerde çağrılır.
Neden böyle çalışıyor?
Bir değeri döndürmek ile ekrana yazdırmak farklı işlerdir. return çağıran koda bir sonuç verir; çıktı komutu ise bir bilgiyi görünür kılar. Hesaplayan fonksiyonun sonucunu başka hesaplarda kullanmak istiyorsan değeri döndür. Yazdırmayı çağıran koda bırakmak fonksiyonu denemeyi ve yeniden kullanmayı kolaylaştırır.
Çalışma sırası
İyi bir başlangıç fonksiyonu küçük ve tek amaçlıdır. Adını bir eylem gibi seç, hangi girdileri kabul ettiğini ve hangi sonucu ürettiğini yaz. Bir normal, bir sınır ve mümkünse bir beklenmeyen durum düşün. Her olası sorunu tek fonksiyona doldurmak yerine önce sözleşmesini anlaşılır kıl.
İkinci örnek · 1
Fonksiyonun adı yapılan işi anlatır. Kodun tamamı yazılı derste bulunur.
Kod
function ikiKat(sayi) {
return sayi * 2;
}
console.log(ikiKat(4));
console.log(ikiKat(7));Beklenen sonucu oku
İki çağrı aynı kuralı farklı girdilerle uygular.
Beklenen çıktı: 8 14
Bir değeri sen değiştir
ikiKat fonksiyonunu 4 ve 7 için çağır; 8 ve 14 bekle. Sonucu bir değişkene alıp üzerine 1 ekle; yazdırmadan da kullanılabildiğini göster.
Hata nereden gelir?
Fonksiyonu tanımlamak onu çalıştırmaz; ayrıca çağırman gerekir.
Kendi çözümünü kur
İki sayı alıp toplam döndüren yeni bir fonksiyon yaz; üç farklı girdi çiftiyle kontrol et. Fonksiyonun içinde sadece hesabı döndür. Sonucu görmek için çağrıdan sonra yazdır.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
function ikiKat(sayi) {
return sayi * 2;
}
console.log(ikiKat(5));
console.log(ikiKat(0));Kendini kontrol et
Bir fonksiyonun sonucu başka hesapta kullanılacaksa neden yalnızca yazdırmak yeterli değildir? Yanıt: Yazdırma ekrana yan etki üretir; çağıran koda kullanılabilir sonuç vermek için uygun bir dönüş değeri gerekir.
Beklenen çıktı: 10 0
Web'e özel: butona tıklama
JavaScript'in asıl gücü web sayfasıyla konuşmasıdır. Bu kod sayfadaki butonu bulur ve tıklanınca bir mesaj gösterir. Bunu bir .html dosyasına yapıştırıp açabilirsin.
<button id="buton">Bana tıkla</button>
<script>
document.getElementById("buton").addEventListener("click", () => {
alert("Merhaba! 👋");
});
</script>
▶ Sonuç
Butona tıklayınca ekranda "Merhaba! 👋" yazan bir uyarı kutusu açılır.
Bu konuyu uygulayarak öğren
DOM seçimi, durum ve olay dinleyicisini çalışan bir düğmede birleştirmek.
DOM, tarayıcının HTML belgesinden oluşturduğu programlanabilir yapıdır. querySelector uygun öğeyi bulur; bulamazsa null döndürür. Düğmenin kimliği ile seçicinin eşleşmesi gerekir. Kodu öğe oluşturulduktan sonra çalıştırmak için bu küçük örnekte script bölümünü düğmenin altına yerleştiriyoruz.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Web'e özel: butona tıklama
DOM seçimi, durum ve olay dinleyicisini çalışan bir düğmede birleştirmek.
Kavramı kur
DOM, tarayıcının HTML belgesinden oluşturduğu programlanabilir yapıdır. querySelector uygun öğeyi bulur; bulamazsa null döndürür. Düğmenin kimliği ile seçicinin eşleşmesi gerekir. Kodu öğe oluşturulduktan sonra çalıştırmak için bu küçük örnekte script bölümünü düğmenin altına yerleştiriyoruz.
Neden böyle çalışıyor?
Bir olay dinleyicisi, tıklama gerçekleştiğinde ne yapılacağını tanımlar. Fonksiyonu dinleyiciye vermek ile o anda çağırmak aynı şey değildir. sayi, tıklamalar arasında saklanan durumdur; her olayda bir artar ve textContent ile arayüze yansıtılır. Metin içeriği için innerHTML kullanmak gerekmez.
Çalışma sırası
Kullanıcı etkileşimini yalnızca fareye göre düşünme. Gerçek button öğesi klavyeyle de kullanılabilir ve doğru temel semantiğe sahiptir. Düğmeyi Tab ile seçip Enter veya Space ile dene. Bir div üzerine tıklama koymak aynı davranışları otomatik sağlamaz.
İkinci örnek · 1
querySelector doğru id ile tek düğmeyi seçer. Kodun tamamı yazılı derste bulunur.
Kod
<button id="sayac">0 kez tıklandı</button>
<script>
const dugme = document.querySelector("#sayac");
let sayi = 0;
dugme.addEventListener("click", () => {
sayi += 1;
dugme.textContent = sayi + " kez tıklandı";
});
</script>Beklenen sonucu oku
textContent yeni durumu düğme metnine güvenli biçimde yansıtır.
Beklenen çıktı: Başlangıçta 0; her tıklamada 1, 2, 3 kez tıklandı.
Bir değeri sen değiştir
Düğmeye üç kez bas; değerleri gözlemle. Bir sıfırlama düğmesi ekle ve aynı durumu 0 yap.
Hata nereden gelir?
Seçici yanlışsa null üzerinde metot çağırırsın; id ve çalışma sırasını kontrol et.
Kendi çözümünü kur
Fare kullanmadan her iki düğmeyi de çalıştır; odak göstergesini kaybetme. Sıfırla düğmesinin olayında hem sayi değerini hem görünen metni güncelle.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
<button id="artir">Artır</button><button id="sifirla">Sıfırla</button><p id="deger">0</p>
<script>
let sayi = 0;
const sonuc = document.querySelector("#deger");
document.querySelector("#artir").addEventListener("click", () => { sonuc.textContent = ++sayi; });
document.querySelector("#sifirla").addEventListener("click", () => { sayi = 0; sonuc.textContent = sayi; });
</script>Kendini kontrol et
Sayaç neden olay fonksiyonunun dışında tanımlanır? Yanıt: Tıklamalar arasında değerini koruması için; her olayda yeniden başlatılmaması gerekir.
Beklenen çıktı: Artır sayacı artırır; Sıfırla hem durumu hem görünümü 0 yapar.
Diziler: birden çok bilgiyi saklamak
Dizi (array), birden fazla değeri sırayla tutar. Köşeli parantez [ ] ile oluşturulur. push sona eleman ekler, length eleman sayısını verir. İlk elemanın sıra numarası 0'dır.
let alisveris = ["ekmek", "süt", "yumurta"];
alisveris.push("peynir");
console.log(alisveris[0]);
console.log(alisveris.length + " ürün var");
▶ Sonuç
ekmek 4 ürün var
Bu konuyu uygulayarak öğren
Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.
Birden fazla ismi isim1, isim2, isim3 gibi ayrı değişkenlerde tutmak yerine sıralı bir koleksiyonda gruplarız. Sıra, bir öğenin konumunu belirtir; değerinin kendisi değildir. İlk öğe çoğu temel yapıda 0 konumundan okunur. İkinci ve üçüncü öğeyi elle işaretleyerek bu sıfırdan başlayan indisi görünür hâle getir.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Diziler: birden çok bilgiyi saklamak
Birden çok değeri sıralı koleksiyonda tutup ekleme, okuma ve sayma yapmak.
Kavramı kur
Birden fazla ismi isim1, isim2, isim3 gibi ayrı değişkenlerde tutmak yerine sıralı bir koleksiyonda gruplarız. Sıra, bir öğenin konumunu belirtir; değerinin kendisi değildir. İlk öğe çoğu temel yapıda 0 konumundan okunur. İkinci ve üçüncü öğeyi elle işaretleyerek bu sıfırdan başlayan indisi görünür hâle getir.
Neden böyle çalışıyor?
Koleksiyonun uzunluğu ile son geçerli indis farklıdır. Üç öğe varsa uzunluk 3, son indis 2 olur. Bir öğeyi ekledikten veya sildikten sonra bu değerler değişebilir. Sabit bir son indis varsaymak yerine uzunluğu ve dolaşma yöntemini kullanmayı öğren.
Çalışma sırası
Veri yapısına hangi işi yaptığını açıkça ayır: sona eklemek, var olan öğeyi değiştirmek ve yeni bir koleksiyon üretmek aynı işlem değildir. Çıktıyı kontrol ederken hem içerik hem sıra hem de öğe sayısını incele. Küçük örnekte bunları doğru kurmak daha sonra dosya ve API verilerini işlemenin temelidir.
İkinci örnek · 1
Başlangıç koleksiyonu iki isim içerir. Kodun tamamı yazılı derste bulunur.
Kod
const isimler = ["Elif", "Mert"];
isimler.push("Deniz");
console.log(isimler[0]);
console.log(isimler[2]);
console.log(isimler.length);Beklenen sonucu oku
Öğe sayısı 3 olur; son geçerli indis 2 olarak kalır.
Beklenen çıktı: Elif Deniz 3
Bir değeri sen değiştir
Başlangıçtaki isimleri değiştir; sıra ve indisleri kâğıda yaz. Bir isim daha ekle; sayının 4 olduğunu doğrula.
Hata nereden gelir?
Uzunluğu son indis gibi kullanmak sınır dışına erişir; üç öğede son konum 2’dir.
Kendi çözümünü kur
Koleksiyonu döngüyle dolaşıp bütün isimleri yazdır; elle indis tekrarlamak yerine uygun dolaşma yapısını seç. Koleksiyonun her değişiminden sonra içerik listesini ve uzunluğu ayrı ayrı not et.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
const isimler = ["Elif", "Mert"];
isimler.push("Ece");
console.log(isimler[0]);
console.log(isimler[2]);
console.log(isimler.length);Kendini kontrol et
Üç öğeli sıfır tabanlı bir koleksiyonda son geçerli indis nedir? Yanıt: 2; uzunluk 3 olması 3 indisinin var olduğu anlamına gelmez.
Beklenen çıktı: Elif Ece 3
Nesneler: bilgiyi isimle saklamak
Nesne (object), her değeri bir isimle saklar; tıpkı bir kimlik kartı gibi. Süslü parantez { } ile oluşturulur, değere nokta ile ulaşılır: ogrenci.isim.
let ogrenci = { isim: "Ayşe", yas: 25, sehir: "İzmir" };
console.log(ogrenci.isim);
ogrenci.yas = 26;
for (let anahtar in ogrenci) {
console.log(anahtar + ": " + ogrenci[anahtar]);
}
▶ Sonuç
Ayşe isim: Ayşe yas: 26 sehir: İzmir
Bu konuyu uygulayarak öğren
Bir kaydı anahtar-değer ilişkisiyle temsil edip eksik alanı ele almak.
Bir öğrencinin adı ve puanı aynı türden sıra öğeleri değildir; farklı anlamdaki alanlardır. Anahtar-değer yapısı, bu bilgilere konum yerine bir adla erişmeyi sağlar. Böylece 0 konumunun isim olduğunu hatırlamak yerine ad anahtarını okursun. Verinin hangi soruya cevap verdiği yapıda görünür hâle gelir.

Videoyla adım adım izle · 4:35
Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.
Video bölümleri ve tam metin
Nesneler: bilgiyi isimle saklamak
Bir kaydı anahtar-değer ilişkisiyle temsil edip eksik alanı ele almak.
Kavramı kur
Bir öğrencinin adı ve puanı aynı türden sıra öğeleri değildir; farklı anlamdaki alanlardır. Anahtar-değer yapısı, bu bilgilere konum yerine bir adla erişmeyi sağlar. Böylece 0 konumunun isim olduğunu hatırlamak yerine ad anahtarını okursun. Verinin hangi soruya cevap verdiği yapıda görünür hâle gelir.
Neden böyle çalışıyor?
Her alanın var olacağını varsaymak gerçek veride hataya neden olur. Bir form gönderiminde veya API yanıtında şehir alanı eksik olabilir. Bu durumda varsayılan değer kullanmak, kayıt atlamak veya kullanıcıya düzeltme istemek farklı kararlardır. Önce eksik bilgiye uygulamanın nasıl davranacağını belirle.
Çalışma sırası
Aynı anahtara ikinci kez değer yazmak çoğu yapıda yeni bir bağımsız kayıt oluşturmaz; o anahtarın değerini değiştirir. Birden çok öğrenci saklayacaksan tek öğrenci sözlüğüne isim eklemek yerine kayıtları bir koleksiyonda toplaman gerekebilir. Yapıyı seçmeden önce “bir kayıt mı, birden çok kayıt mı?” sorusunu sor.
İkinci örnek · 1
ad ve puan farklı anlamdaki alanların anahtarlarıdır. Kodun tamamı yazılı derste bulunur.
Kod
const ogrenci = { ad: "Elif", puan: 80 };
console.log(ogrenci.ad);
console.log(ogrenci["puan"]);
console.log(ogrenci.sehir ?? "Belirtilmedi");Beklenen sonucu oku
sehir olmadığı için açık bir yedek değer seçilir.
Beklenen çıktı: Elif 80 Belirtilmedi
Bir değeri sen değiştir
Öğrencinin adını ve puanını değiştir. sehir alanını ekle; yedek yerine gerçek değerin döndüğünü kontrol et.
Hata nereden gelir?
Anahtarı büyük/küçük harf farkıyla yazmak aynı alanı bulmayabilir; adlandırmayı tutarlı yap.
Kendi çözümünü kur
Eksik alanın ekranda nasıl anlatılacağını düşün; sessizce yanlış bir şehir uydurmak yerine açık bir eksik bilgi mesajı yaz. Önce bütün anahtarları yaz. Sonra bir anahtarı kaldırıp eksik bilgi yolunu dene.
Çözüm varyasyonu · 1
Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.
Kod
const ogrenci = { ad: "Deniz", puan: 95 };
console.log(ogrenci.ad);
console.log(ogrenci["puan"]);
console.log(ogrenci.sehir ?? "Belirtilmedi");Kendini kontrol et
İki farklı öğrenci için aynı ad anahtarını tek sözlükte tekrar tekrar yazmak neden yetmez? Yanıt: Aynı anahtarın değeri güncellenir. Birden çok öğrenci için kayıtları ayrı tutan bir koleksiyon gerekir.
Beklenen çıktı: Deniz 95 Belirtilmedi
JavaScript öğrenirken sık yapılan hatalar
Bunlarla karşılaşırsan panik yapma; herkesin başına gelir.
== yerine === kullanmamak
== türleri dönüştürerek karşılaştırır ve "5" == 5 sonucunu doğru verir. Tür dönüşümünü özellikle istemiyorsan === tercih et. == karşılaştırmasının dönüşüm kurallarını ayrıca öğren.
Büyük/küçük harf hatası
kullaniciAdi ile kullaniciadi farklı değişkenlerdir. Yanlış yazarsan "is not defined" hatası alırsın.
Parantez veya süslü parantezi kapatmayı unutmak
Açılan her ( ve { kapatılmalıdır. Unutursan "Unexpected end of input" gibi bir sözdizimi hatası alırsın.
Daha fazlası için Yaygın Yazılım Hataları sayfasına bak.
Sonraki adımlar: öğrenme yol haritası
JavaScript öğrenmeye devam etmek için bu sırayı izleyebilirsin.
-
1
HTML ve CSS
Önce web sayfasının iskeletini (HTML) ve görünüşünü (CSS) öğren.
-
2
JavaScript temelleri
Bu sayfadaki 8 dersi bitir, sonra sayfadaki öğeleri değiştirmeyi (DOM) öğren.
-
3
Projeler
Yapılacaklar listesi, hesap makinesi, hava durumu uygulaması gibi küçük siteler yap.
-
4
Araç seç
Ön yüz için React veya Vue, sunucu tarafı için Node.js öğren.
JavaScript Bilgini Pekiştir ve Uygulamaya Başla
Yalnızca teoride kalma! JavaScript için hazırladığımız adım adım 8 interaktif ders, tarayıcıda kod deneme atölyeleri ve seviye tespit sınavıyla kendini hemen geliştir.
Kod oyun alanı
JavaScript kodunu burada dene
Bir dersin kodunu seç ya da kendi kodunu yaz. Kodu değiştir, sonra ▶ Çalıştır butonuna bas. Kod tamamen senin tarayıcında çalışır.
Kodu değiştir ve ▶ Çalıştır butonuna bas.
Sitenin dışında denemek istersen: Hiçbir şey kurmana gerek yok! Tarayıcında Cmd + Option + J (Mac) veya F12 (Windows) tuşlarına basarak konsolu aç, kodu yapıştır ve Enter'a bas.
Bitirme projesi: Güvenli metinle çalışan yapılacaklar listesi
Yeni bir görevi arayüze ekleyen, tamamlanma durumunu değiştiren ve görünür sayacı güncelleyen küçük bir uygulama yap. İlk aşamada veriler bellekte kalır.
- Etiketli bir giriş ve gerçek button öğeleriyle HTML iskeleti kur.
- Görevleri id, metin ve tamamlandi alanlarıyla bir dizide sakla.
- Boş veya yalnızca boşluk olan girdiyi reddet.
- Metinleri textContent ile göster; kullanıcı metnini HTML olarak çalıştırma.
- Ekleme ve tamamlama olaylarını duruma bağla.
- Toplam ve tamamlanan görev sayısını durumdan yeniden hesapla.
- Klavyeyle ekleme ve düğme odak sırasını dene.
- Yenilemede belleğin kaybolduğunu açıkla; kalıcı saklamayı ayrı bir sonraki modül olarak planla.
Projen bitti mi? Bunları doğrula
- Birden fazla görev birbirinden bağımsız değişiyor.
- Boş girdi eklenmiyor.
- <script> gibi metinler öğe üretmeden düz metin kalıyor.
- Sayaç arayüz kopyalarından değil veri durumundan hesaplanıyor.
Temellerden sonra devam müfredatı
Bu modül başlangıç ve uygulamalı temel sağlar. Aşağıdaki konular ayrı derinleşme alanlarıdır; yalnızca bu sayfayı bitirmek bütün dili bildiğin anlamına gelmez.
- Asenkron JavaScript, Promise ve fetch
- ES modülleri, hata yönetimi ve test
- localStorage, güvenli veri işleme ve uygulama mimarisi
Bitirme projesi için referans çözüm
Önce kendi projen üzerinde çalış. Bu küçük başlangıç çözümünü inceleyip görevlerde istenen ek durumlarla geliştir.
JAVASCRIPT
<!doctype html>
<html lang="tr"><meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Görev listesi</title>
<style>body{font:1rem/1.8 system-ui;max-width:650px;margin:40px auto;padding:20px}button,input{font:inherit}li{margin:12px 0}:focus-visible{outline:3px solid #245f9e;outline-offset:3px}</style>
<h1>Görevlerim</h1><form id="form">
<label for="gorev">Yeni görev</label>
<input id="gorev" maxlength="120" required>
<button>Ekle</button></form>
<p id="bilgi" role="status"></p><ul id="liste"></ul>
<script>
const gorevler = [];
let sonrakiId = 1;
const liste = document.querySelector("#liste");
const bilgi = document.querySelector("#bilgi");
function ciz() {
liste.replaceChildren();
for (const gorev of gorevler) {
const li = document.createElement("li");
const dugme = document.createElement("button");
dugme.type = "button";
dugme.textContent = (gorev.tamamlandi ? "Tamamlandı: " : "Tamamla: ") + gorev.metin;
dugme.setAttribute("aria-pressed", String(gorev.tamamlandi));
dugme.dataset.id = String(gorev.id);
dugme.addEventListener("click", () => {
gorev.tamamlandi = !gorev.tamamlandi;
ciz();
liste.querySelector('[data-id="' + gorev.id + '"]').focus();
});
li.append(dugme); liste.append(li);
}
bilgi.textContent = gorevler.filter(g => g.tamamlandi).length + "/" + gorevler.length + " tamamlandı";
}
document.querySelector("#form").addEventListener("submit", event => {
event.preventDefault();
const input = document.querySelector("#gorev");
const metin = input.value.trim();
if (!metin) { bilgi.textContent = "Bir görev yaz."; return; }
gorevler.push({id: sonrakiId++, metin, tamamlandi: false});
input.value = ""; ciz(); input.focus();
});
ciz();
</script>
<p>Öğretim örneği: veriler bellektedir, yenilemede silinir.</p>
</html>Tarayıcıda aç. Boş girdi, iki görev, tamamlama ve düz metin olarak <script> yazısını dene. Yenilemede veri silinmesi bu sürümün açık sınırıdır.
Şimdi sen yap
Dört işlem hesap makinesi
İki sayıyı al, seçilen işlemi yap ve sonucu ekranda göster.
Keşfet →UygulamaYapılacaklar listesi
Görev ekle, tamamlandığını işaretle ve kaldır.
Keşfet →Uygulamaİnteraktif not ortalaması hesaplayıcı
Vize (%40) ve final (%60) notlarını alıp ağırlıklı ortalamayı ve Geçti / Kaldı durumunu hesapla.
Keşfet →Bu içerik işine yaradı mı?
Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.