İçeriğe geç
Educora
Başlangıç15 dk7 / 27

Fonksiyonlar ve ok fonksiyonları

Kodu yeniden kullanılabilir parçalara böl: fonksiyon tanımlama, parametreler, `return`, varsayılan değerler, ok fonksiyonları ve kapsam.

Kendini test et
Bu derste öğreneceklerin
  • Parametreli bir fonksiyon tanımlayıp onu argümanlarla çağırmak
  • return ile sonuç döndürmek ve bunu console.log'dan ayırt etmek
  • Ok fonksiyonları yazmak ve kısa yazımın kurallarını bilmek
  • Yerel ve global değişkenleri ayırt etmek

Bir çevrim içi mağazada her ürünün indirimli fiyatını hesaplaman gerektiğini düşün. Aynı üç satırı on yere yazabilirsin, ama formülde bir hata bulursan onu on yerde düzeltmen gerekir. Bunun yerine kodu bir kez bir fonksiyona koyar, ona bir ad verir ve gereken her yerde çağırırsın.

Fonksiyon tanımlamak ve çağırmak

Bir fonksiyon function anahtar kelimesi, bir ad, parantez içinde parametreler ve süslü parantez içinde gövde ile tanımlanır. Tanımlamak çalıştırmak demek değildir: fonksiyon ancak adının arkasına parantez yazılarak çağrıldığında çalışır. Çağırırken verilen değerlere argüman denir.

JavaScript
function greet(name) {
  console.log(`Hello, ${name}!`);
}

greet('Aysel');
greet('Murad');
greet('Leyla');
▸ Beklenen çıktı
Hello, Aysel!
Hello, Murad!
Hello, Leyla!
name parametredir; 'Aysel', 'Murad' ve 'Leyla' ise argümanlardır.

return: sonucu geri vermek

Fonksiyonlar çoğu zaman bir şey hesaplar ve sonucu çağrıldığı yere döndürür. Bunun için return yazılır. Döndürülen değer bir değişkene yazılabilir, başka bir hesapta kullanılabilir ya da yazdırılabilir. return çalıştığı anda fonksiyon hemen biter. return yoksa fonksiyon undefined döndürür.

JavaScript
function calculateArea(width, height) {
  return width * height;
}

const room = calculateArea(4, 5);
console.log('Room:', room);
console.log('Two rooms:', calculateArea(3, 3) + calculateArea(2, 1));

function addNoReturn(a, b) {
  const sum = a + b;
}
console.log(addNoReturn(2, 3));
▸ Beklenen çıktı
Room: 20
Two rooms: 11
undefined

Bir parametreye varsayılan değer verilebilir: argüman verilmezse bu değer kullanılır.

JavaScript
function orderTea(size = 'medium', sugar = 1) {
  return `${size} tea with ${sugar} sugar`;
}

console.log(orderTea());
console.log(orderTea('large'));
console.log(orderTea('small', 0));
▸ Beklenen çıktı
medium tea with 1 sugar
large tea with 1 sugar
small tea with 0 sugar

Ok fonksiyonları

Ok fonksiyonu (arrow function), fonksiyon yazmanın modern ve daha kısa bir yoludur: function kelimesi yerine parametrelerden sonra => işareti konur. Gövde tek bir ifadeyse süslü parantez ve return yazılmaz; ifadenin değeri kendiliğinden döndürülür. Tek parametrenin etrafındaki parantez de atılabilir.

JavaScript
const square = (x) => x * x;
const add = (a, b) => a + b;
const shout = text => text.toUpperCase() + '!';
const sayHi = () => 'Hi!';

const describe = (name, age) => {
  const group = age >= 18 ? 'an adult' : 'a teenager';
  return `${name} is ${group}`;
};

console.log(square(7), add(2, 3));
console.log(shout('goal'), sayHi());
console.log(describe('Elvin', 15));
▸ Beklenen çıktı
49 5
GOAL! Hi!
Elvin is a teenager
JavaScript
const double1 = (n) => n * 2;
const double2 = (n) => { n * 2; };
const double3 = (n) => { return n * 2; };

console.log(double1(5), double2(5), double3(5));
▸ Beklenen çıktı
10 undefined 10

Kapsam ve değer olarak fonksiyonlar

Bir fonksiyonun içinde oluşturulan değişken yereldir: yalnızca o fonksiyonun içinde vardır. Dışarıda oluşturulan bir değişken ise fonksiyonun içinden okunabilir. Bu kural fonksiyonları birbirinden yalıtır ve ad çakışmalarını önler.

JavaScript
const siteName = 'Educora';

function showScope() {
  const secret = 42;
  console.log(siteName, secret);
}

showScope();
console.log(typeof secret);
▸ Beklenen çıktı
Educora 42
undefined
Fonksiyonun dışında secret yoktur; typeof bunu gösterir.

JavaScript'te fonksiyon da bir değerdir: bir değişkene yazılabilir ve başka bir fonksiyona argüman olarak verilebilir. Başka bir fonksiyona verilen fonksiyona callback denir. Bu fikirle dizi metotlarında ve asenkron kodda her yerde karşılaşacaksın.

JavaScript
function repeat(times, action) {
  for (let i = 1; i <= times; i++) {
    action(i);
  }
}

repeat(3, (step) => console.log(`Step ${step}`));
▸ Beklenen çıktı
Step 1
Step 2
Step 3
Alıştırma

Santigrat dereceyi Fahrenhayta çeviren toFahrenheit adlı bir ok fonksiyonu yaz. Formül: celsius * 9 / 5 + 32. Fonksiyon sonucu yazdırmamalı, return etmeli; yazdırma işini aşağıdaki satırlar yapıyor.

Alıştırma · JavaScript
const toFahrenheit = (celsius) => {
  // return the temperature in Fahrenheit
};

console.log(toFahrenheit(0));
console.log(toFahrenheit(100));
console.log(toFahrenheit(-40));
▸ Beklenen çıktı
32
212
-40

Önemli noktalar

  • Fonksiyon, bir kez yazılıp defalarca çağrılan bir kod bloğudur.
  • Parametreler tanımda, argümanlar çağrıda yer alır; parametrelerin varsayılan değeri olabilir.
  • return sonucu döndürür ve fonksiyonu bitirir; yoksa sonuç undefined olur.
  • (a, b) => a + b ok fonksiyonu tek ifadeyi kendiliğinden döndürür; { } varsa return gerekir.
  • Fonksiyon içindeki değişkenler yereldir; fonksiyonlar değer olarak aktarılabilir (callback).

Kendini test et

10 soru. Her doğru cevap XP kazandırır.

1 / 10
greet('Leyla') çağrısında 'Leyla' nedir?