Fungsi yang Mengembalikan Fungsi dalam JavaScript

Katakan kita mempunyai fungsi seperti berikut yang mengembalikan rentetan:

javascriptfunction func() {
  return '!';
}

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

Sekarang, secara analogi, mari kita kembalikan fungsi tanpa nama dan bukannya rentetan:

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

let result = func(); // pembolehubah result akan menjadi fungsi
console.log(result); // akan memaparkan 'function() {return '!';}'

Seperti yang anda lihat, pembolehubah result sekarang merupakan sebuah fungsi. Mari kita paparkan hasil kerjanya dalam konsol. Untuk melakukan ini, tulis tanda kurung kepadanya:

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

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

Oleh kerana panggilan func() mengembalikan sebuah fungsi, maka kita boleh terus memanggil fungsi yang dikembalikan itu, seperti ini: func()() - tanda kurung pertama mendapatkan hasil fungsi func (yang sendiri merupakan sebuah fungsi), manakala tanda kurung kedua diaplikasikan kepada hasil func.

Mari kita cuba:

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

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

Buat fungsi func1, yang apabila dipanggil seperti ini: func1()(), mengembalikan nombor 1. Buat fungsi serupa func2, yang mengembalikan nombor 2. Cari jumlah hasil fungsi-fungsi ini.