Функция, ки функсия бармегардонад дар JavaScript

Фарз мекунем, ки мо функсияе дорем, ки сатр бармегардонад:

javascriptfunction func() {
  return '!';
}

let result = func();
console.log(result); // '!'-ро хориҷ мекунад

Акнун ба ҷои сатр, ба монанди он, функсияи номаълумро бармегардонем:

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

let result = func(); // дар тағирёбандаи result функсия хоҳад буд
console.log(result); // 'function() {return '!';}'-ро хориҷ мекунад

Чунон ки мебинед, тағирёбандаи result акнун функсияро ташкил медиҳад. Биёед натиҷаи коркарди онро ба консол хориҷ кунем. Барои ин қавсҳои доиравиро менависем:

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

let result = func();
console.log( result() ); // '!'-ро хориҷ мекунад

Аз он ҷое ки даъвати func() функсия бармегардонад, пас мо метавонем ҳамон дам ин функсияи баргардонидашударо даъват кунем, ба ин тавр: func()() - якумин қавсҳои доирави натиҷаи функсияи func-ро мегиранд (ки худаш функсия мебошад), ва қавсҳои доиравии дуюм ба натиҷаи func татбиқ карда мешаванд.

Биёед санҷем:

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

console.log( func()() ); // '!'-ро хориҷ мекунад
Задание 1

Функсияи func1-ро созед, ки вақте ки ба ин тавр даъват карда шавад: func1()(), адади 1-ро баргардонад. Функсияи монанди func2-ро созед, ки адади 2-ро бармегардонад. Ҷамъи натиҷаҳои ин функсияҳоро ёбед.