Merhaba arkadaşlar bu yazıda JavaScript'de operatörlere ve en çok kullanılan operatör türlerine değineceğiz.
Yazıda:
-
Operatör ve operand kavramına
-
JavaScript operatörlerine
-
Aritmetiksel (Arithmetic) operatörlere
-
Atama (Assignment) operatörlerine
-
Kıyaslama (Comparison) operatörlerine
-
String operatörlere
-
Mantıksal (Logical) operatörlere
-
Bit türündeki (Bitwise) operatörlere
-
Type operatörlerine
-
Operatör öncelliğine
Değineceğim.
İyi okumalar dilerim.
Bir JavaScript expression'da değerlere operand ve operand'lar arasında işlemler yapmamızı sağlayan işaretlere operator adı verilir.
Operatörleri matematiksel işlemlerden bir script'in çalışma akışını değiştirmeye kadar çeşitli işlemlerde kullanırız. Diğer programlama dillerinde olduğu gibi JavaScript içerisinde bir çok operatör vardır.
JavaScript'de operatörler aşağıdaki gibi listelenebilir:
-
Aritmetik (Arithmetic) operatörleri
-
Atama (Assignment) operatörleri
-
Kıyaslama (Comparison) operatörleri
-
String operatörler
-
Mantıksal (Logical) operatörler
-
Bit türündeki (Bitwise) operatörler
-
Type operatörler
Şimdi bunları tek tek inceleyelim arkadaşlar.
Daha önce değindiğim gibi gündelik hayatta matematiksel işlemler için kullandığımız operatörleri JavaScript'de de kullanabiliriz.
Operatörlere ait işaretler ve anlamları aşağıdaki tablodaki gibidir:
Operator | Açıklama |
---|---|
+ |
Toplama işlemi yapmak için kullanılır. |
- |
Çıkarma işlemi için kullanılır. |
* |
Çarpma işlemi için kullanılır. |
** |
Üs alma operatörüdür. Üs alma işlemi için kullanılır. |
/ |
Bölme işlemi için kullanılır. |
% |
Modul operatörü bölme işleminde kalanı almak için kullanılır. |
++ |
Artırma işlemi için kullanılır. Bir değişkeni +1 olacak şekilde artırır. |
-- |
Çıkarma işlemi için kullanılır. Bir değişkeni -1 olacak şekilde azaltır. |
Aritmetiksel operatörlerde literal türündeki değerler de kullanılabilir.
Örnek
%%javascript
// x değişkeni sabit türündeki değerlerin toplamını depoluyor.
let x = 200 + 25;
// Konsola 225 yazdırılacaktır.
console.log(x);
225
Şimdi de bazı aritmetiksel operatörlere değinelim. Örneklerde sıkça görebileceğiniz için toplama ve çıkarma gibi operatörleri es geçiyorum.
Bir sayının üssünü almak için kullanılır.
Örnek
%%javascript
const x = 5;
// 5 rakamının karesini alacaktır.
let result = x ** 2;
// Konsola 25 değerini yazdıracaktır.
console.log(result);
// 5 rakamının küpünü alacaktır.
let result2 = x ** 3;
// Konsola 125 değerini yazdıracaktır.
console.log(result2);
25
125
Bazen bir bölme işleminin sonucunda kalan değeri tam sayı olarak almak isteyebiliriz bu durumda modul operatörü kullanılır.
Örnek
%%javascript
// 9'un 4'e bölümünden kalan değer konsola yazdırılır. Kalan değer 1'dir.
console.log(9 % 4);
1
JavaScript' de bir değişkenin değerini +1 olarak artırma yöntemi olarak ++
operatörünü alternatif olarak kullanabiliriz.
Kullanım şekli ikiye ayrılır:
-
Ön artırım operatörü olarak kullanım
-
Son artırım operatörü olarak kullanım
Bu yöntemleri birer örnek ile inceleyelim arkadaşlar.
Aşağıdaki örnekte ön artırım yöntemi görülüyor. x
değişkeni önce +1 değer artırılacak ve sonrasında matematiksel işlemelere dahil edilecektir.
Örnek
%%javascript
let x = 5;
/**
* x değeri önce +1 artırılacak ve sonrasında matematiksel işleme dahil edilecektir. Bu
* durumdaki x'in değeri 6'dır.
*/
console.log(`İşlemin sonucu: ${7 + ++x}'dür.`);
İşlemin sonucu: 13'dür.
Aşağıdaki örnekte ise son artırım yöntemi görülüyor. x
değişkeni önce kullanılacak sonrasında değeri +1 olacak şekilde artırılacaktır.
Dikkat ederseniz x
değişkeni son artırım işlemi yapıldıktan sonra ta ki bir sonraki satırda kullanılana kadar aynı kalıyor.
Örnek
%%javascript
let x = 5;
/**
* x değeri önce kullanılacak ve sonrasında değeri +1 şeklinde artırılacaktır. Aşağıdaki
* satırda x'in değeri 5'dir.
*/
console.log(`İşlemin sonucu: ${7 + x++}'dir.`);
console.log(`x'in tekrar çağrıldığında değeri: ${x} olacaktır.`);
İşlemin sonucu: 12'dir.
x'in tekrar çağrıldığında değeri: 6 olacaktır.
JavaScript' de bir değişkenin değerini -1 olarak azaltma yöntemi olarak --
operatörünü alternatif olarak kullanabiliriz.
Örnek
%%javascript
let x = 10;
x--;
// x değişkeni yeni değer olarak 9 rakamını depolayacaktır.
console.log(x);
9
JavaScript'de işlem öncelliği matematikte olduğu gibidir. Bazen işlem önceliğini kendimiz ayarlamak isteriz bu durumda öncelik vermek istediğimiz expression'ları parantez içerisine alırız.
Örnek
%%javascript
// Normalde işlemin sonucu 80 olacaktır.
console.log(20 + 30 * 2);
/**
* Bu durumda işlemin sonucu 100 olacaktır. Çünkü 20 ve 30 değerlerini parantez içinde tanımladık.
* İşlem öncelliği buraya verilecektir.
*/
console.log((20 + 30) * 2);
80
100
Örnek
%%javascript
let x = 20 - 3 + 2;
// Sonuç 19 olacaktır.
console.log(x);
19
Atama operatörleri bir değişkene veri atamak için kullanılır.
=
işareti kullanılır. Eşittir işareti olarak ==
veya ===
ifadelerinden faydalanırız. Bu ifadelerde Javascript Kıyaslama Operatörleri başlığı altında değineceğim çünkü bu operatörler kıyaslama işlemleri için kullanılırlar.
JavaScript'deki atama operatörlerini listeleyecek olursak:
Operator | Örnek | Matematiksel Karşılığı |
---|---|---|
= |
x = y | x = y |
+= |
x += y | x = x + y |
-= |
x -= y | x = x - y |
*= |
x *= y | x = x * y |
/= |
x /= y | x = x / y |
%= |
x %= y | x = x % y |
**= |
x **= y | x = x ** y |
Bir örnekle nasıl kullanıldığını görelim. Diğer operatörler de benzer mantıkla çalışır.
Örnek
%%javascript
let x = 10;
let y = 5;
// Sonuç 18 olacaktır. x=x+8 yani x=10+8 ifadesinin matematiksel karşılığıdır.
console.log((x += 8));
// Sonuç 125 olacaktır y=y**3 yani y=5x5x5 ifadesinin karşılığıdır.
console.log((y **= 3));
let z;
z = "Selam" + " " + "Dostum";
// "Selam Dostum" string'i konsola yazılacaktır.
console.log(z);
18
125
Selam Dostum
Kıyaslama operatörleri iki veya daha fazla değişkeni kıyaslamak için kullanılır. Özellikle conditional statement'ler ile birlikte iki veya daha fazla değişkenin birbiriyle durumunu sorgulayarak ve program akışını değiştirmek için kullanılır.
true
, yanlış ise false
değerini döndürür.
Kıyaslama operatörlerini listelersek:
Operator | Açıklama |
---|---|
== |
Eşittir. |
=== |
Değişken veri tipi ve içeriği eşittir. |
!= |
Eşit değildir. |
!== |
Değişken veri tipi ve içeriği eşit değildir. |
> |
Büyüktür. |
< |
Küçüktür. |
>= |
Büyük eşittir. |
<== |
Küçük eşittir. |
? |
Ternary operatör. |
Burada önemli olduğunu düşündüğüm operatörlere değineceğim. Diğer operatörleri örnekleri gördükçe ne işe yaradığını hemen anlayabilirsiniz.
❗ Nasıl armut ile elmayı kıyaslayamıyorsak JavaScript'de de kıyaslanacak değişkenlerin aynı türde olması gerekir. Aksi taktirde kıyaslama sonucunda anlam veremediğimiz sorunlar ile karşılaşabiliriz. değişkenleri birbirine dönüştürmek için JavaScript bir takım metotları içerisinde barındırır fakat konu kapsamında olmadığından ötürü bu metotlara değinmiyorum.
İstisna olarak sayısal özelliğe sahip veri tipi string olan bir değişken ile number veri tipine sahip bir değişken kıyaslandığında JavaScript otomatik olarak string veri tipine sahip değişkeni sayısal değere çevirir ve kıyaslama işlemini gerçekleştirir.
Örnek
%%javascript
const x = 5;
const y = "5";
// Konsola "true" ifadesi yazdırılacaktır.
console.log(x == y);
true
Örnek
%%javascript
/**
* Konsola "false" ifadesi yazdırılacaktır.
*
* JavaScript string türde sayısal değer içeren iki değişkeni kıyaslarken 32 rakamının ilk rakamına
* bakarak alfabetik şekilde değerlendirme yapacaktır.
* 3 rakamı 4 rakamından küçük olduğu için sonuç false olacaktır.
*
* Konsola "false" ifadesi yazdırılır.
*/
console.log("4" < "32");
false
iki veya daha fazla değişkenin depoladığı verileri içeriği bakımından kıyaslar. Kıyaslama sonucu doğru ise true
, değilse false
olacak şekilde değer döndürür.
Örnek
%%javascript
const x = 5;
const y = 5;
// x ile y değişkeni kıyaslanacak aynı veriyi depoladığı için konsola "true" ifadesi yazdırılacaktır.
console.log(x == y);
const m = 8;
const n = 7;
// m ile n değişkeni kıyaslanacak aynı veriyi depolamadığı için konsola "false" ifadesi yazdırılacaktır.
console.log(m == n);
true
false
iki veya daha fazla değişkenin depoladığı verileri içeriği ve veri tipi bakımından kıyaslar. Kıyaslama sonucu doğru ise true
, değilse false
olacak şekilde değer döndürür.
Örnek
%%javascript
const x = 5;
const y = 5;
/**
* x ile y değişkeni kıyaslanacak aynı veriyi ve veri tipini depoladığı için konsola "true" ifadesi
* yazdırılacaktır.
*/
console.log(x === y);
const m = 8;
// ⚠️ n değişkeni string 8 değerini depoluyor.
const n = "8";
/**
* m ile n değişkeni kıyaslanacak aynı veriyi depolamasına rağmen farklı
* veri tipine sahip oldukları için konsola "false" ifadesi yazdırılacaktır.
*/
console.log(m === n);
true
false
iki veya daha fazla değişkenin depoladığı verileri içeriği bakımından kıyaslar. Kıyaslama sonucu doğru ise false
, değilse true
olacak şekilde değer döndürür.
💡 Bunu şu şekilde aklınızda tutabilirsiniz. Sonucu true
olan bir expression'ı false
, sonucu false
olsan bir expression'ı true
olarak değerlendirir.
Örnek
%%javascript
const x = 5;
const y = 5;
// x ile y değişkenleri kıyaslanacak aynı veriyi depoladığı için konsola "false" ifadesi yazdırılacaktır.
console.log(x != y);
const m = 8;
const n = 7;
// m ile n değişkenleri kıyaslanacak aynı veriyi depolamadığı için konsola "true" ifadesi yazdırılacaktır.
console.log(m != n);
false
true
iki veya daha fazla değişkenin depoladığı verileri içeriği ve veri tipi bakımından kıyaslar. Kıyaslama sonucu doğru ise false
, değilse true
olacak şekilde değer döndürür.
💡 Bunu şu şekilde aklınızda tutabilirsiniz. Sonucu true
olan bir expression'ı false
, sonucu false
olan bir expression'ı true
olarak değerlendirir. !=
operatörü ile arasındaki fark expression'ı içerik ve veri tipi olacak şekilde değerlendirir.
Örnek
%%javascript
const x = 5;
const y = 5;
/**
* x ile y değişkenleri kıyaslanacak aynı veriyi ve veri tipine depoladığı için konsola "false" ifadesi
* yazdırılacaktır.
*/
console.log(x !== y);
const m = 8;
// ⚠️ n değişkeni string 8 değerini depoluyor.
const n = "8";
/**
* m ile n değişkenleri kıyaslanacak aynı veriyi depolamasına rağmen farklı veri tipini depoladığı için
* konsola "true" ifadesi yazdırılacaktır.
*/
console.log(m !== n);
false
true
JavaScript'de ?
işareti ternary operatör olarak isimlendirilir.
Ternary operatörü bir conditional operatördür. Yani bir condition'a göre işlemleri gerçekleştirir ve programın akışını değiştirir.
Sıklıkla bir koşula bağlı olarak bir değeri değişkene atamak için kullanılır.
➖ Ternary Conditional Operatörü ile If
Conditional Statement Arasındaki Fark
Ternary operatörü kıyaslama işlemini basit hale getirmek için oluşturulmuştur. Ternary ile oluşturulan kıyaslama işlemleri genelde tek satırdan oluşur ve iki değişkeni kıyaslamak için kullanılır. İkiden fazla durumunun kıyaslama yapılması halinde if
keyword'u ile yapılan kıyaslama işlemleri tercih edilir. Bu sayede kodun daha kolay okunup yönetilmesi amaçlanır.
Örnek
%%javascript
const a = 4;
const b = 4;
// a ile b değişkenlerinin değerlerini kıyaslıyoruz ve sonucu result değişkenine depoluyoruz.
const result = a == b;
/**
* Eğer result'ın depoladığı kıyaslama sonucu true ise "Evet..." ile başlayan metin
* değilse "Hayır.." ile başlayan metin konsola yazdırılacaktır.
* Değerleri değiştirin ve sonucu gözlemleyin.
*/
result
? console.log("Evet iki değişkenin depoladığı veri birbirine eşittir.")
: console.log(
"Hayır iki değişkenin depoladığı veri birbirine eşit değildir."
);
Evet iki değişkenin depoladığı veri birbirine eşittir.
JavaScript'de temelde 2 adet string operatör vardır bunlar:
Operator | Açıklama |
---|---|
+ |
Ekleme operatörü. Bir string ifadeyi başka bir string değere ekler. |
+= |
Ekleme ve atama operatörü. Bir string ifadeyi başka bir string ifadeye ekler ve sonucu bir değişken içine depolar. |
Şimdi bunları inceleyelim arkadaşlar.
String değişkenlerde +
operatörü ekleme operatörü olarak ifade edilir. Yani iki sting değişken toplanmaz, birbirine eklenir.
Örnek
%%javascript
// String veri tipindeki 5 değerini value1 isimi değişkene depoluyoruz.
const value1 = "5";
// String veri tipindeki 15 değerini value2 isimi değişkene depoluyoruz.
const value2 = "15";
//❗ Konsola "515" ifadesi yazdırıldığına dikkat edin.
console.log(value1 + value2);
515
Bir string ifadeye başka bir string ifadeyi ekledikten sonra elde edilen sonucu değişken içerisinde depolayabiliriz.
%%javascript
let value1 = "Kemal";
let value2 = "Atatürk";
// Ekleme ve atama operatörü, örnekte value1=value1+value2 ifadesini denktir.
value1 += value2;
// Konsola "KemalAtatürk "yazdırılacaktır.
console.log(value1);
KemalAtatürk
JavaScript'de expression'lar (ifadeler) soldan sağa şekilde değerlendirilir. Yani Javascript ifadenin nerede string olacağını bu pattern'e göre belirler.
Örnek
%%javascript
var x = 4 + 3 + "1";
// Konsola "71" yazdırılacaktır.
console.log(x);
var y = "1" + 4 + 3;
// Konsola "143" yazdırılacaktır.
console.log(y);
71
143
Mantıksal operatörler JavaScript'de özellikle kıyaslama işlemlerinde sıklıkla kullanılan operatör grubudur. Bu bakımdan anlaşılması önem taşır.
Mantıksal operatörleri listeleyecek olursak:
Operator | Açıklama |
---|---|
?? |
Nullish Coalescing Operator |
?. |
Optional Chaining Operator |
&& |
Mantıksal AND |
|| |
Mantıksal OR |
! |
Mantıksal NOT |
Expression'da kullanılan ifadelerin içeriklerini null
veya undefined
olması durumuna göre kıyaslar.
Expression'daki ifadelerden herhangi biri null
veya undefined
değerine sahipse diğer ifadenin değeri sonuç olarak döndürülür.
💡 ??
operatörünün temelde kullanım amacı null
veya undefined
veri tiplerine dayanır. Diğer operatörler kullanarak da aynı sonuca erişilebilir fakat ??
operatörü bu işlemi sadeleştirmek için oluşturulmuştur.
??
operatörü sayesinde yapılacak işlemi ortaklayabiliriz. Örneğin bir değişkenin null
veya undefined
değerlerinden herhangi birine sahip olması halinde belirli bir işlemi gerçekleştirebiliriz. Bu anlamda ??
operatörü işimizi kolaylaştırır.
Örnek
%%javascript
const a = null;
const b = 10;
/**
* a değişkeninin değeri null olması sebebi ile b değişkeninin değeri sonuç olarak
* döndürülecektir.
*/
console.log(`Kıyaslama işleminin sonucu: ${b ?? a}`);
console.log(a ? "1":"0");
Kıyaslama işleminin sonucu: 10
0
?.
operatörü nesne veri türünde oluşturulmuş bir değişkendeki nested property'lere ulaşmamızı ve null
veya undefined
değerleri için property değerlerini sınamamızı sağlar. Nested property değeri null
veya undefined
değerlerinden herhangi birine sahip ise JS çalışmayı durdurur ve undefined
olarak sonuç döndürür.
Örnek
%%javascript
const car={
id: 1,
type: "station wagon",
carProperties: {
color: "white",
engine: 1.4,
}
}
// white nested property'sine erişiyoruz ve konsola sonucu yazdırıyoruz.
console.log(car?.carProperties?.color);
// wheelSize adında nested property'si olmadığı için dönecek olan sonuç undefined olacaktır.
console.log(car?.carProperties?.wheelSize);
white
undefined
Expression içerisindeki ifadeleri kıyaslar her ifadenin doğru olması durumunda tüm sonuç true
olacaktır.
Herhangi bir ifadenin sonucunun false
olması durumunda tüm sonuç false
olacaktır.
%%javascript
let x = 10;
let y = 5;
/**
* y 'nin 3'den büyük olması ve x'in 20'den küçük olduğunu biliyoruz.
* Bu durumda ifadenin sonucu true olur.
*/
const result = 3 < y && x < 20;
// Konsola "true" ifadesi yazılacaktır.
console.log(result);
// x'e yeni değer depolayalım.
x = 30;
// Expression'un sonucunu result2 adında değişkene depolayalım.
const result2 = 3 < y && x < 20;
/**
* Konsola "false" ifadesi yazılacaktır. Çünkü 30<20 ifadesi doğru değildir ve false değer döndürür
* bu da tüm sonucu false yapar.
*/
console.log(result2);
true
false
Expression içerisindeki ifadeleri kıyaslar herhangi bir ifadenin doğru olması durumunda tüm sonuç true
olacaktır.
Şayet tüm ifadelerin sonucu false
olursa tüm sonuç false
olacaktır.
Örnek
%%javascript
// Tek satırda aynı tür değişkenleri tanımlayabildiğimizi hatırlayalım bu arada.
let x = 30, y = 5, z = 2;
/**
* Son iki ifadenin sonucu false'dır.
* Fakat ilk ifadenin sonucu true olması sebebi ile tüm sonuç true olarak değerlendirilir.
*/
const result = 3 < y || x < 20 || z == 0;
// Konsola "true" ifadesi yazdırılacaktır.
console.log(result);
// Tüm ifadelerin sonucu false olması sebebi ile tüm sonuç false olarak değerlendirilir.
result2 = 10 < y || x < 20 || z == 0;
// Konsola "false" ifade yazılır.
console.log(result2);
true
false
Bir expression sonucunun tersini alır. Yani ifade true
ise false
, false
ise true
sonuçlanır.
%%javascript
// x'e bir değer depolandığı için mantıksal olarak true özelliği taşır.
let x = 20;
/**
* Normalde konsola true ifadesi yazılırdı. Fakat burada NOT operatörü kullanıldığı için true olan
* sonucun tersi alınacaktır. Yani sonuç false olacak ve konsola "false" yazdırılacaktır.
*/
console.log(!(x < 50));
// y değişkeni undefined veri tipine sahiptir. Mantıksal olarak false değerine sahiptir.
let y;
// Konsola "false" ifadesi yazdırılacak. Boolean() metodu ile değişkenin boolean türünden değerini öğrenebiliriz.
console.log(Boolean(y))
// y değişkenin depoladığı değerin tersini aldı. Yani false değerini true yaptı. Konsola "true" ifadesi yazılır.
console.log(!y);
false
false
true
❗ Mantıksal atama operatörlerinin, mantıksal operatörler ile ilişkisi olmakla birlikte aynı anlama gelmemektedir. Mantıksal atama operatörleri ES (2020) ile JavaScript'e dahil olmuştur. Bu bakımdan 2020 yılından önce release edilen tarayıcılarda çalışmayabilir.
Mantıksal atama operatörlerini listelersek:
Operator | Örnek | Karşılığı |
---|---|---|
&&= |
x &&= y | x = x && (x = y) |
||= |
x ||= y | x = x || (x = y) |
??= |
x ??= y | x = x ?? (x = y) |
Şimdi bu operatörleri tek tek inceleyelim.
Bir expression veya statement'ın sonucunun true
olması durumunda ikinci değer değişkene atanır.
Örnek
%%javascript
let x = 35;
/**
* x değişkeni kullanıcı tanımlı değer depoladığı için true mantıksal değerine sahiptir.
* Bu durumda x değişkenine yeni bir değer (8) rakamı depolanır.
*/
x &&= 8;
// 8 rakamı konsola yazdırılacaktır.
console.log(x);
/**
* y değişkeni kullanıcı tanımı bir depolamıyor. Varsayılan olarak değeri undefined'dir.
* Bu da mantıksal anlamda false ifadesine denk gelir.
*/
let y;
// y değişkeni kullanıcı tanımlı bir değer depolamadığı için yeni değer sahip olmayacaktır.
y &&= 20;
// Konsola "undefined" mesajı yazılır.
console.log(y);
8
undefined
Bir expression veya statement'ın sonucunun false
olması durumunda ikinci değer değişkene atanır.
💡 ||=
operatörü ile &&=
operatörü birbirine zıttır. Bu bağlamda birinin mantığını kavrarsanız diğerininkini de kavrayabilirsiniz.
Örnek
%%javascript
/**
* y değişkeni kullanıcı tanımı bir değer depolamıyor. Varsayılan olarak değeri undefined'dir.
* Bu da mantıksal anlamda false ifadesine denk gelir.
*/
let y;
// y değişkeni kullanıcı tanımlı bir değer depolamadığı için yeni değeri 20 olarak tanımlanacaktır.
y ||= 20;
// Konsola 20 rakamı yazılır.
console.log(y);
let x = 35;
/**
* x değişkeni kullanıcı tanımlı değer depoladığı için true mantıksal değerine sahiptir.
* Bu durumda x değişkenine yeni bir değer depolanmayacaktır.
*/
x ||= 8;
// 35 rakamı konsola yazdırılacaktır.
console.log(x);
20
35
Bir değişkenin depoladığı verinin undefined veya null olması durumunda ikinci değer değişkene atanır.
Örnek
%%javascript
// x değişkeninin default değeri undefined'dır.
let x;
// x değişkeninin default değer undefined olması sebebi ile x'e 80 rakamı depolanacaktır.
x ??= "80";
// 80 rakamı konsola yazdırılır.
console.log(80);
80
Bit1 seviyesinde kıyaslama işlemleri için kullanılır. işlemler binary2 sayısal düzeninde gerçekleşir ve sonuç decimal3 olarak depolanır.
Önemli bir takım bitwise operatörleri listelersek:
Operator | Açıklama |
---|---|
& |
Bit düzeyinde mantıksal AND |
| |
Bit düzeyinde mantıksal OR |
~ |
Bit düzeyinde mantıksal NOT |
^ |
Bit düzeyinde mantıksal XOR |
Şimdi bunları inceleyelim arkadaşlar.
Bit düzeyinde mantıksal AND işlemi gerçekleştirmek için kullanılır. Decimal değeri binary sayısal düzenine çevirir sonrasında bit'leri kıyaslar ve elde edilen sonucu tekrar decimal sayı sistemine çevirir.
İşlem aşağıdaki tablo mantığına göre gerçekleşir:
x'in Bit Değeri | y'nin Bit Değeri | x & y Sonucu |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Örnek
%%javascript
// x değişkenin binary değeri 101'dir.
let x = 5;
// x değişkenin binary değeri 011'dir.
let y = 3;
/**
* x = x & y ifadesinin dengidir. Bit seviyesinde AND işlemi gerçekleştiriliyor.
* Sonuç 001 olacak ve değer x değişkenine aktarılacaktır.
*/
x &= y;
// 001 decimal karşılığı 1'dir ve konsola 1 rakamı yazdırılacaktır.
console.log(x);
1
Bit düzeyinde mantıksal OR işlemi gerçekleştirmek için kullanılır. Decimal değeri binary sayısal düzenine çevirir sonrasında bit'leri kıyaslar ve elde edilen sonucu tekrar decimal sayı sistemine çevirir.
İşlem her bit için ayrı ayrı gerçekleştirilir.
İşlem aşağıdaki tablo mantığına göre gerçekleşir:
x'in Bit Değeri | |x Sonucu |
---|---|
0 | 0 |
0 | 1 |
1 | 1 |
1 | 1 |
Örnek
%%javascript
// 38 rakamının karşılığı 100110'dir.
let x = 38;
// 45 rakamının karşılığı 101101'dir.
let y = 45;
// 101111 decimal karşılığı 47'dir ve konsola 47 rakamı yazdırılacaktır.
x |= y;
console.log(x);
47
Bit düzeyinde mantıksal NOT işlemi gerçekleştirmek için kullanılır. Decimal değeri binary sayısal düzenine çevirir sonrasında bit'leri kıyaslar ve elde edilen sonucu tekrar decimal sayı sistemine çevirir.
İşlem her bit için ayrı ayrı gerçekleştirilir.
İşlem aşağıdaki tablo mantığına göre gerçekleşir:
x'in Bit Değeri | ~x Sonucu |
---|---|
0 | 1 |
1 | 0 |
Kısaca bit değerlerini ters çevirir.
Örnek
%%javascript
// 5 rakamının karşılığı 0101'dir.
let x = 5;
// 1010'un decimal karşılığı 10'dur ve konsola 10 rakamı yazdırılacaktır.
console.log(~x);
10
Bit düzeyinde mantıksal XOR işlemi gerçekleştirmek için kullanılır. Decimal değeri binary sayısal düzenine çevirir sonrasında bit'leri kıyaslar ve elde edilen sonucu tekrar decimal sayı sistemine çevirir.
İşlem aşağıdaki tablo mantığına göre gerçekleşir:
x'in Bit Değeri | y'nin Bit Değeri | x ^ y Sonucu |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Örnek
%%javascript
// 20 rakamının binary karşılığı 10100'dır.
let x = 20;
// 28 rakamının binary karşılığı 11100'dır.
let y = 28;
// x=x^y ifadesine denktir.
x ^= y;
// 1000 binary değerinin decimal karşılığı 8'dir.
console.log(x);
8
JavaScript'de bir çok type operatörü vardır. Type operatörleri bir değişkeni başka bir değişkene dönüştürmek için veya değişkenin türünü ve veri tipini öğrenme gibi işlemler için kullanılır.
En çok kullanılan type operatörlerini listelersek:
-
typeof()
-
instanceof
Diğer type operatörlerine ayrı bir başlık altında değineceğim. Çünkü asıl konumuz operatörleridir. Type operatörleri aynı zamanda metot (fonksiyon) olma özelliği taşır.
Bir değişkenin depoladığı değere göre veri türünü öğrenmemizi sağlar.
Örnek
%%javascript
const x = 4;
// "number" ifadesi konsola yazılır. x değişkeninin veri tipi sayısal özelliklidir.
console.log(typeof x);
const y = "deneme";
// "string" ifadesi konsola yazılır. y değişkeninin veri tipi string özelliklidir.
console.log(typeof y);
const z = false;
// "boolean" ifadesini konsola yazdırır. z değişkenin veri tipi boolean özelliklidir.
console.log(typeof z);
number
string
boolean
Object veri türü özelliğine sahip değişkenlerde birden fazla kullanım yöntemi olmakla birlikte değişkenin veri türünü belirlemede, bir özelliğin nesne ile ilişkisini anlamada veya katılım izleme işlemlerini gerçekleştirmek için kullanılır.
💡 Özellikle object veri türü özellikli değişkenlerde debug işlemleri için kullanışlı olabilir.
Örnekler
%%javascript
const student = { name: "Betül", surname: "Şavluk" };
/**
* student değişkeni nesne özellikli olup/olmadığı ternary operatör ile sınanıyor
* sonuç result'a aktarılıyor.
*/
const result =
student instanceof Object
? "Evet student nesne özellikli bir değişkendir."
: "Hayır student nesne özellikli bir değişken değişkendir.";
// Konsola "Evet..." ile başlayan mesaj yazdırılacaktır.
console.log(result);
// Konsola "student değişkeninin veri tipi object'dir." mesajı yazılacaktır.
console.log("student değişkeninin veri tipi" + " " + typeof student + "'dir.");
Evet student nesne özellikli bir değişkendir.
student değişkeninin veri tipi object'dir.
%%javascript
// Örnekte student değişkeni için object özellikleri sorgulanıyor.
function Student(studentName) {
this.name = studentName;
}
const student = new Student();
// true değeri döndürür. Çünkü student değişkeni Student constructor'un örneğidir.
console.log(student instanceof Student);
// true değeri döndürür. Çünkü student değişkeni aynı zamanda Object örneğidir.
console.log(student instanceof Object);
// false değeri döndürür. Çünkü student değişkeni Array örneği değildir.
console.log(student instanceof Array);
true
true
false
Footnotes
-
"Bit," kısaltılmış haliyle "binary digit" kelimesinin baş harflerinden oluşan bir terimdir ve bilgisayar bilimlerinde temel bir kavramdır. Bit, en küçük veri birimi olarak bilinir ve yalnızca iki değere sahip olabilen bir elektronik veya dijital bilgi parçasını temsil eder. Bu iki değer 0 ve 1'dir. ↩
-
"Binary" terimi, bilgisayar bilimlerinde ve elektronikte oldukça yaygın olarak kullanılan bir terimdir ve ikili (2 temel değer) sayı sistemini ifade eder. İkili sistem, yalnızca iki sembol veya değer içeren bir sayı sistemidir. Bu iki sembol genellikle "0" ve "1" olarak temsil edilir. ↩
-
"Decimal," yaygın olarak ondalık sayı sistemini ifade eden bir terimdir. Ondalık sayı sistemi, 10 rakamdan oluşur ve her bir rakamın temsil ettiği değer 0 ila 9 arasında değişir. Ondalık sistemi kullanarak herhangi bir sayıyı ifade edebilirsiniz. Bu sistemde her haneli bir sayı, 10'un üssüne dayalı bir değer temsil eder. ↩
Top comments (0)