- Parametreli bir fonksiyon tanımlayıp onu argümanlarla çağırmak
returnile sonuç döndürmek ve bunuconsole.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.
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.
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.
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.
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
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.
const siteName = 'Educora';
function showScope() {
const secret = 42;
console.log(siteName, secret);
}
showScope();
console.log(typeof secret);▸ Beklenen çıktı
Educora 42 undefined
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.
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
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.
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.
returnsonucu döndürür ve fonksiyonu bitirir; yoksa sonuçundefinedolur.(a, b) => a + bok fonksiyonu tek ifadeyi kendiliğinden döndürür;{ }varsareturngerekir.- 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.
greet('Leyla') çağrısında 'Leyla' nedir?