- Konu sahibi
- #1
JavaScript operator nedir?
JavaScript operator, değerler veya değişkenler üzerinde işlem yapan sembol ya da anahtar kelimedir. Örneğin
+ toplama, === karşılaştırma, && koşullu mantık ve = atama yapar. Operatörün ürettiği sonuç; sayısal bir değer, true/false, yeni bir metin veya başka bir değerin kendisi olabilir.En sık kullanılan operatör grupları
- Aritmetik:
+,-,*,/,%ve üs alma için**. - Atama:
=,+=,-=gibi operatörler bir değişkene değer yazar veya mevcut değeri günceller. - Karşılaştırma:
===,!==,>,<,>=ve<=. Sonuçları booleandır. - Mantıksal:
&&,||ve!. Koşulları birleştirir veya tersine çevirir. - Koşullu:
koşul ? doğruDeğer : yanlışDeğerbiçimindeki üçlü operatör, kısa birif...elseseçimi yapar. - Diğerleri:
typeofbir değerin türünü,inbir özelliğin veya anahtarın varlığını,instanceofise nesnenin belirli bir kurucuyla ilişkisini sınar.
Somut kullanım örneği
Aşağıdaki kod, operatörlerin birlikte nasıl çalıştığını gösterir:
Kod:
const adet = 3;
const birimFiyat = 20;
const toplam = adet * birimFiyat;
const indirimliMi = toplam >= 50;
const sonuc = indirimliMi ? toplam * 0.9 : toplam;
console.log(toplam); // 60
console.log(indirimliMi); // true
console.log(sonuc); // 54
Burada
* çarpma, >= karşılaştırma ve ? : koşullu seçim yapar. Çalıştırıldığında sırasıyla 60, true ve 54 görülmelidir. Farklı bir sonuç alırsanız önce değişken türlerini ve parantezleri kontrol edin; özellikle metin ile sayının birlikte kullanıldığı aritmetik ifadeler beklenmedik sonuç verebilir.Doğru operatörü seçme
Aynı görünen operatörlerin davranışı farklı olabilir. Pratik karar vermek için şu ayrımı kullanın:
| İhtiyaç | Tercih | Örnek |
|---|---|---|
| Değerleri hem tür hem içerik olarak karşılaştırmak | === veya !== | 5 === "5" sonucu false |
| Yalnız null veya undefined için varsayılan kullanmak | ?? | isim ?? "Bilinmiyor" |
| Her falsy değerde varsayılan kullanmak | || | etiket || "Yok" |
| Bir nesne özelliğine güvenli erişmek | ?. | kullanici?.adres?.sehir |
== tür dönüşümü yapabildiği için başlangıç kodunda genellikle === daha öngörülebilirdir. || ise 0, boş metin ve false değerlerini de eksik kabul eder. Bu değerler geçerliyse ?? kullanmak daha doğru olur.İşlem sırası ve yaygın hatalar
JavaScript ifadeleri belirli bir öncelik sırasına göre değerlendirir. Çarpma, bölme ve kalan operatörleri aynı öncelik düzeyindedir; bu grupta soldan sağa ilişkilendirme uygulanır. Bunlar toplama ve çıkarmadan önce gelir. Karışık ifadelerde niyeti açıkça göstermek için parantez kullanın:
Kod:
const hataliGibi = 2 + 3 * 4; // 14
const acik = (2 + 3) * 4; // 20
Sık hatalar şunlardır:
- Atama için
=, karşılaştırma için===gerektiğini karıştırmak. - Metinleri
+ile birleştirirken sayısal toplama beklemek. Örneğin"2" + 3ifadesi metin birleştirir. - Ondalık hesaplarda kayan nokta davranışını yok saymak. Para gibi hassas değerlerde hesaplama yaklaşımını ayrıca tasarlayın.
- Kısa devre davranışını anlamadan
&&veya||kullanmak. Bu operatörler yalnızcatrueveyafalsedöndürmek zorunda değildir; ifadelerden birinin değerini döndürebilir.
Örneğin
12 / 3 * 2 sonucu 8’dir; çarpmanın her zaman bölmeden önce yapılacağını varsayarsanız yanlış sonuca ulaşırsınız. ?? boş metni veya sıfırı değiştirmez, yalnız null/undefined değerinde sağ tarafı seçer. ?. ise tanımlanmış bir bağın null/undefined olması durumunda zinciri durdurur; hiç bildirilmemiş değişkeni güvenli hâle getirmez.Bir ifade beklenmedik sonuç veriyorsa alt işlemleri ayrı değişkenlere ayırın,
typeof ile türleri kontrol edin ve belirsiz önceliklerde parantez ekleyin.Sık sorulan sorular
JavaScript’te operatör ile ifade arasındaki fark nedir?
Operatör işlemi belirleyen sembol veya anahtar kelimedir; ifade ise operatörler, değerler ve değişkenlerden oluşan ve sonuç üreten bütündür.
a + b bir ifadedir, + ise bu ifadedeki operatördür.Operatör önceliğini öğrenmeden kod yazabilir miyim?
Basit ifadelerde evet; ancak birden fazla işlem türü birleştiğinde parantez kullanmak daha güvenlidir. Parantez hem değerlendirme sırasını belirler hem de kodun niyetini okuyana açıklar.
Bir operatörün sonucunu nasıl kontrol ederim?
İfadeyi geçici bir değişkene atayıp
console.log() ile yazdırın. Sonucun türünü anlamak için ayrıca typeof sonuc ifadesini kontrol edebilirsiniz.