- Kalan operatörü
%dahil aritmetik operatörlerle hesap yapmak ===ile==arasındaki farkı açıklamak- Örtük ve açık tip dönüşümünü tanımak,
Number()ile string'i sayıya çevirmek &&,||,!operatörlerini ve truthy/falsy değerleri anlamak
Küçük bir bilmece: JavaScript'te '5' + 3 ifadesi '53', '5' - 3 ise 2 verir. Neden toplamada sayılar “yapışıyor” da çıkarmada doğru hesaplanıyor? Bu derste operatörleri ve JavaScript'in tipleri kendiliğinden nasıl dönüştürdüğünü öğreneceksin.
Aritmetik operatörler
Toplama, çıkarma, çarpma ve bölmenin yanında JavaScript'te iki kullanışlı operatör daha vardır. % bölmenin kalanını verir: 7 % 3 = 1. ** ise üs alır: 2 ** 3 = 8. Kalan, bir sayının çift olup olmadığını anlamak için idealdir: n % 2 sıfırsa sayı çifttir.
console.log(7 + 3);
console.log(7 - 3);
console.log(7 * 3);
console.log(7 / 2);
console.log(7 % 3);
console.log(2 ** 10);
console.log(2 + 3 * 4);
console.log((2 + 3) * 4);▸ Beklenen çıktı
10 4 21 3.5 1 1024 14 20
Matematikteki gibi çarpma ve bölme toplamadan önce yapılır, parantez ise sırayı değiştirir. Bir değişkeni güncellemek için kısa yazımlar da vardır: x += 5, x = x + 5 demektir; x++ ise değeri 1 artırır.
let coins = 10;
coins += 5;
console.log(coins);
coins -= 3;
console.log(coins);
coins *= 2;
console.log(coins);
coins++;
console.log(coins);▸ Beklenen çıktı
15 12 24 25
Karşılaştırma: === ve ==
Karşılaştırma operatörleri (>, <, >=, <=) her zaman true ya da false döndürür. Eşitliği kontrol etmenin iki yolu vardır. Katı eşitlik === hem değeri hem de tipi kontrol eder. Gevşek eşitlik == ise karşılaştırmadan önce tipleri dönüştürür; bu da şaşırtıcı sonuçlar verebilir.
console.log(5 > 3);
console.log(5 === 5);
console.log(5 === '5');
console.log(5 == '5');
console.log(0 == false);
console.log(5 !== '5');▸ Beklenen çıktı
true true false true true true
Tip dönüşümü
Bir operatör farklı tipteki değerlerle çalıştığında JavaScript'in bunları kendiliğinden tek bir tipe dönüştürmesi.
Bilmecenin cevabı şu: + operatörü hem sayıları toplar hem de string'leri birleştirir. Taraflardan biri string ise JavaScript diğer tarafı da string'e çevirir ve ikisini yapıştırır. -, * ve / ise yalnızca sayılarla çalışır, bu yüzden string'leri sayıya çevirir. Sayıya dönüşemeyen bir değer NaN (Not a Number, “sayı değil”) verir.
console.log('5' + 3);
console.log('5' - 3);
console.log('5' * '2');
console.log(true + 1);
console.log('hello' * 2);
console.log(typeof NaN);▸ Beklenen çıktı
53 2 10 2 NaN number
Tahmin etmek yerine tipi kendin dönüştürmek daha güvenlidir; buna açık dönüşüm denir. Number() bir değeri sayıya, String() string'e, Boolean() ise boolean'a çevirir. parseInt() bir string'in başındaki tam sayıyı okur, örneğin '42px' içinden 42'yi.
const input = '25';
console.log(input + 5);
console.log(Number(input) + 5);
console.log(Number('abc'));
console.log(parseInt('42px'));
console.log(String(100) + 1);▸ Beklenen çıktı
255 30 NaN 42 1001
Mantıksal operatörler ve truthy/falsy
&&(VE) — iki koşul da doğruysa sonuç doğrudur.||(VEYA) — en az biri doğruysa sonuç doğrudur.!(DEĞİL) — değeri tersine çevirir:!true,falseolur.
Koşul olarak her değer kullanılabilir. Altı değer falsy (yanlış gibi kabul edilen) sayılır: false, 0, boş string '', null, undefined ve NaN. Diğer bütün değerler truthy'dir; boş olmadıkları için '0' ve 'false' string'leri bile.
const age = 16;
const hasTicket = true;
console.log(age >= 14 && hasTicket);
console.log(age >= 18 && hasTicket);
console.log(age >= 18 || hasTicket);
console.log(!hasTicket);
console.log(Boolean(''), Boolean('0'), Boolean(0));▸ Beklenen çıktı
true false true false false true false
Fiyat formdan string olarak geldi: '15'. Üç satır yazdır: price * quantity, price + quantity ve son olarak price'ı Number() ile sayıya çevirip doğru toplamı. Önce sonuçları tahmin et, sonra kontrol et.
const price = '15';
const quantity = 3;
// 1) print price * quantity
// 2) print price + quantity
// 3) print the correct sum using Number()▸ Beklenen çıktı
45 153 18
Önemli noktalar
%bölmenin kalanını verir (7 % 3= 1);+=ve++değişkeni kısaca günceller.===değeri ve tipi kontrol eder; tipleri dönüştürdüğü için==kullanmaktan kaçın.- Taraflardan biri string ise
+birleştirir;-,*,/string'leri sayıya çevirir. Number(),String()veBoolean()tipi açıkça dönüştürür; sayıya dönüşmeyen değerNaNverir.- Falsy değerler:
false,0,'',null,undefined,NaN; geri kalanlar truthy'dir.
Kendini test et
10 soru. Her doğru cevap XP kazandırır.
'10' + 5 ifadesinin sonucu nedir?