var/let/const farkı, veri türleri, tip seçenekleri ve şablon değişmezleri.
JavaScript tarayıcıda çalışan, web sayfalarını dinamik ve etkileşimli hale getiren programlama dilidir. HTML yapı, CSS görünüm, JavaScript davranış sağlar.
Tarayıcıda V8 (Chrome), SpiderMonkey (Firefox) gibi motorlar JS kodunu çalıştırır. Node.js ile sunucu tarafında da çalışabilir.
var eski yöntemdir, fonksiyon kapsamlıdır ve hoisting vardır. let blok kapsamlıdır, değiştirilebilir. const blok kapsamlıdır, tekrar atanamaz. Modern JS'te var kullanmayın — her zaman let veya const tercih edin.
var ile tanımlanan değişkenler ve fonksiyon tanımları kod çalışmadan önce bellekte üste taşınır. Bu yüzden var ile tanımlanan bir değişkeni tanımlamadan önce kullanmak hata vermez, undefined döner. let ve const'ta bu durum yoktur.
// ── var / let / const ──
var eski = "fonksiyon kapsamlı, hoisting var, tekrar tanımlanabilir";
let degisken = "blok kapsamlı, hoisting yok, değiştirilebilir";
const sabit = "blok kapsamlı, değiştirilemez (ama obje içi değişebilir)";
// let vs var fark
for (var i = 0; i < 3; i++) {}
console.log(i); // 3 — sızdı!
for (let j = 0; j < 3; j++) {}
// console.log(j); // ReferenceError!
// ── Veri Tipleri ──
const sayi = 42;
const ondalik = 3.14;
const metin = "Merhaba";
const sablon = `Selam ${metin}!`; // Template literal
const mantik = true;
const bos = null;
const tanimsiz = undefined;
const sembol = Symbol("benzersiz");
const buyuk = 9007199254740991n; // BigInt
// typeof
console.log(typeof 42); // "number"
console.log(typeof "abc"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" — bilinen bir hata!
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
// ── Template Literals ──
const ad = "Furkan";
const yas = 28;
console.log(`Ad: ${ad}, Yaş: ${yas}`);
console.log(`${2 + 2}`); // 4
console.log(`${yas >= 18 ? "Yetişkin" : "Çocuk"}`);
// Çok satırlı
const html = `
<div>
<h1>${ad}</h1>
<p>${yas} yaşında</p>
</div>
`;
// ── Tip Dönüşümü ──
console.log(Number("42")); // 42
console.log(Number("abc")); // NaN
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
console.log(String(42)); // "42"
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined));// false
console.log(Boolean(NaN)); // false
// Geri kalan her şey true!
// Otomatik tip dönüşümü (kaçının!)
console.log("5" + 3); // "53" — string
console.log("5" - 3); // 2 — number
console.log("5" * "3"); // 15 — number
console.log([] + []); // ""
console.log({} + []); // "[object Object]"
// ── Karşılaştırma ──
console.log(5 == "5"); // true — gevşek
console.log(5 === "5"); // false — katı (BUNU KULLANIN)
console.log(null == undefined); // true
console.log(null === undefined); // false
console.log(NaN === NaN); // false — NaN eşit değil!
console.log(isNaN(NaN)); // true