Operators

Kategori: Javascript , 30 Ekim 2019 , JanFranco


Javascript'te tüm operatörler zorunlu tip dönüşümünü uygularlar. Çoğu operatör sadece ilkel değerler ile çalışabildiği için objeler işlem yapılmadan önce ilkel tipe çevrilirler.

Bu yazımda Javascript'teki operatörleri göreceğiz. İlk olarak assignment operatörü (=) ile başlayalım. Assignment operatörünün kullanım alanları:


var x = value;
obj.propKey = value;
obj['propKey'] = value;
arr[index] = value;
Değişkenlere değer atayabiliriz, bir özellik oluşturabiliriz, dizide bir index'e eleman atayabiliriz. Assignment operatörünü zincir şeklinde kullanabiliriz:


x = y = 0;
Assigment operatörünü diğer operatörler ile birlikte kullanabiliriz: *=, /=, %=, +=, -=, <<=, >>=, >>>=, &=, ^=, |=


myvar op= value // myvar = myvar op value
var x = 2;
x += 3; // x = x + 3;
>>
5
Javascript'te karşılaştırma yapabilmek için kullanabileceğimiz iki operatör mevcut: Strict equality (===) ve Lenient equality (==). Strict equality'de aynı veri tipleri karşılaştırılır. Lenient equality'de ise önce tür dönüşümü yapılır daha sonra veriler kaşılaştırılır. Strict equality'de karşılaştırabileceğimiz değerler:


undefined === undefined
null === null
x === x (Numbers)
+0 === -0

var b = {};
b === b
Lenient equality algoritması şu şekilde çalışır, eğer karşılaştırılan iki değer aynı tipte ise (undefined, null, boolean, number, string, object) bu değerleri strict equality operatörü gibi karşılaştır. Eğer farklı tiplerde ise:


1- Eğer undefined ve null karşılaştırılıyor ise true değer dön:

undefined == null
>
true

2- Eğer bir string ile sayı değeri karşılaştırılıyorsa, string'i sayı değerine çevir ve strict equality operatörü ile karşılaştır.

3- Eğer boolean değer ile boolean olmayan bir değer karşılaştırılıyorsa, boolean değeri sayıya çevir ve lenient operatörü ile karşılaştır.

4- Eğer bir obje ile bir değer karşılaştırılıyorsa, objeyi ilkel veri tipine çevir, lenient operatörü ile karşılaştır.
Not operatörünü kullanarak da karşılaştırma yapabiliriz:


x !== y // !(x === y)
x != y // !(x == y)
Büyüklük, küçüklük karşılaştırması için sıralama operatörlerini kullanabiliriz: <, >, <=, >=:


7 >= 5
>>
true
Ordering yani sıralama operatörleri aşağıdaki algoritma ile çalışır:


1- İki değerin de ilkel veri tipinde olduğundan emin ol. Eğer obje var ise ilkel tipe dönüştür.

2- Eğer stringler karşılaştırılıyor ise lexicographical karşılaştırma yap. (https://en.wikipedia.org/wiki/Lexicographical_order)

3- Bu iki durum dışında iki değeri de sayıya dönüştür ve normal karşılaştırma yap.
Plus operatörü (+) ile toplama işlemi gerçekleştirebiliriz. Fakat eğer operandlardan biri string ise işler biraz değişir. Bir string değer ile sayıyı toplarsak:


'foo' + 3
>>
'foo3'

3 + 'foo'
>>
'3foo'

'Colors: ' + ['red', 'green', 'blue']
>>
'Colors: red, green, blue'
Eğer string yok ise tüm değerler sayıya çevilir ve toplanır:


3 + 1
>>
4

3 + true
>>
4
İşlem sırası önemlidir:


'foo' + (1 + 2)
>>
'foo3'

('foo' + 1) + 2
>>
'foo12'
Boolean değerler için binary logical operatörleri ve logical not operatörlerini kullanbiliriz:


x && y
x || y
!x
Sayı değerleri için aritmetik operatörleri ve bitwise operatörleri kullanabiliriz:


x + y
x - y
x * y
x / y
x % y
++x
--x
x++
x--
-x
+x
~x
x & y
x | y
x ^ y
x << y
x >> y
x >>> y
Bir kaç özel operatörü daha inceleyerek yazıyı sonlandıralım. Conditional operator (?:) kullanımı aşağıdaki gibidir:


<<condition>> ? <<if_true>> : <<if_false>>
var x = (obj ? obj.prop : null);
Comma operator (,) ile komutları ayırabiliriz. İki taraftaki komut da çalışır fakat sağ taraftaki komut return edilir:


123, 'abc'
>>
'abc'

var x = 0;
var y = (x++, 10);
x
y
>>
1
10
void operatörü komutu yerine getirir ve undefined değer return eder:


void 0
>>
undefined

void (0)
>>
undefined

void 4 + 7 // (void 4) + 7
>>
NaN

var x = 3;
void (x = 5)
>>
undefined
x 
>>
5
typeof operatörü ile ilkel veri tiplerini kategorize edebiliriz:


typeof undefined
>>
'undefined'

typeof 'abc'
>>
string
typeof operatörünün tüm olası sonuçlarını görelim:


undefined, tanımlanmamış değer	'undefined'
null				'object'
boolean değer			'boolean'
string değer			'string'
function			'function'
Diğer tüm değerler		'object'
Instanceof operatörü ile belirtilen değerin belirlenen Constructor ile üretilip ürteilmediğini kontrol edebiliriz:


{} instanceof Object
>>
true

[] instanceof Array
>>
true


Sonraki Yazı: Booleans
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın