03.04. Arrow Fonksiyonu

Arrow fonksiyonları, fonksiyon ifadeleri yazmak için çok daha kısa bir sözdizimidir. “=>” şeklinde bir belirteç kullanır. Arrow fonksiyonu isimsizdir ve this ile fonksiyonlara bağlanma şeklini değiştirir. Bu bölüm, basit örneklerle karşılaştırmalı olarak Arrow fonksiyonlarına ayrılmıştır.Arrow fonksiyonu sayesinde function, return ve {…} ifadelerini kullanmaya gerek kalmaz. Basit örneklerle açıklayalım.

Çok parametreli bir arrow fonksiyonu

var yerine const kullanması önerilir. Özellikle fonksiyonlar değiştirilmeyecekse const ifadesi en mantıklı seçimdir. ES6 bölünde fonksiyon ifadesi kalkmış, => sonra sistem klasik bir kod gibi çalışmıştır. Kullanım çok daha kısaldığı görülmektedir. Aynı şekilde tek satırlık bir kod var ise “{…}” kullanmaya gerek yoktur.

Tek parametreli bir arrow fonksiyonu

Aslında sözdizimi açısından çok parametreli veya tek parametreli bir fark yoktur. Yukarıdaki örnekten farklı olarak bu bölümde değer olarak bir array döndüreceğiz.

split fonksiyonu diğer bir çok programlama dilinde olduğu gibi bir metni istenilen karaktere göre ayırır ve dizi sonucu döndürür. Burada boşluk karakterini kullanıp metni buna göre kelimelere böldük. ES5’te return, function ve {…} var iken ES6’da bunları kullanmadan fonksiyon bir değişkene bağlanmış. Çok parametreli kullanımdan tek farkı: çok parametreli de parametreler parantez içinde örneğin (x, y) şeklinde gösterilirken tek parametreli de paranteze ihtiyaç yoktur.

Parametresiz bir arrow fonksiyonu

Bu bölümde hem parametresiz hem de değer döndürmeyen bir fonksiyon yapalım.

Nesne döndürme

Fonksiyon sonuç olarak bir nesne döndürebilir. Nesneyi birden fazla olabilir ve döndürülen değerlerinin bir anahtar değeri vardır. Örneğin,

Döndürülen değer bir nesnedir. Aslında bunu bir JSON olarak düşünebiliriz. Anahtar değer ve value’lar içeren bir Javascript nesnesidir.

this

this kullanımı ES6 öncesi problemdi. this o nesnesi işaret ediyordu, ancak aynı nesne içindeki bir fonksiyon içinden ulaşılamıyordu. Öncelikle problemi bir görelim:

Burada setInternal sayesinde fonksiyon saniye bir defa çalışır. Ancak, buyu() fonksiyonu içinden this.yas fonksiyonuna ulaşılamaz. Çözüm için:

Çözümde this bir değişken içine atıldığında o değişken üzerinden yas değişkenine ulaşmak mümkündür. ES5’te bu çözüm yerine ES6’da tam çözüm gelmiştir.

ES6’da nesnenin this ifadesine erişmek mümkündür.