JavaScript'te Fonksiyon Döndüren Fonksiyon

Diyelim ki bize bir dize döndüren şöyle bir fonksiyonumuz var:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // '!' yazacak

Şimdi, benzer şekilde, bir dize yerine anonim bir fonksiyon döndürelim:

javascriptfunction func() {
  return function() {
    return '!';
  };
}

let result = func(); // result değişkeni bir fonksiyon olacak
console.log(result); // 'function() {return '!';}' yazacak

Gördüğünüz gibi, result değişkeni artık bir fonksiyonu temsil ediyor. Şimdi onun çalıştırılmasının sonucunu konsola yazdıralım. Bunun için parantezler kullanalım:

javascriptfunction func() {
  return function() {
    return '!';
  };
}

let result = func();
console.log( result() ); // '!' yazacak

func() çağrısı bir fonksiyon döndürdüğü için, bu döndürülen fonksiyonu hemen şu şekilde çağırabiliriz: func()() - ilk parantezler func fonksiyonunun sonucunu (kendisi de bir fonksiyon olan) alır, ikinci parantezler ise func'ın sonucuna uygulanır.

Deneyelim:

javascriptfunction func() {
  return function() {
    return '!';
  };
}

console.log( func()() ); // '!' yazacak
Задание 1

Şu şekilde çağrıldığında: func1()(), 1 sayısını döndüren bir func1 fonksiyonu yapın. Benzer şekilde, 2 sayısını döndüren bir func2 fonksiyonu yapın. Bu fonksiyonların sonuçlarının toplamını bulun.