İçeriğe geç
Educora
Başlangıç14 dk3 / 27

Operatörler ve tip dönüşümü

Aritmetik, karşılaştırma ve mantıksal operatörleri öğren; `'5' + 3` ifadesinin neden `'53'` verdiğini anla.

Kendini test et
Bu derste öğreneceklerin
  • 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.

JavaScript
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.

JavaScript
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.

JavaScript
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ü

Tanım
Örtük tip dönüşümü (coercion)

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.

JavaScript
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.

JavaScript
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, false olur.

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.

JavaScript
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
Alıştırma

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.

Alıştırma · JavaScript
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() ve Boolean() tipi açıkça dönüştürür; sayıya dönüşmeyen değer NaN verir.
  • 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.

1 / 10
'10' + 5 ifadesinin sonucu nedir?