Функция, ки функсия бармегардонад дар JavaScript
Фарз мекунем, ки мо функсияе дорем, ки сатр бармегардонад:
function func() {
return '!';
}
let result = func();
console.log(result); // '!'-ро хориҷ мекунад
Акнун ба ҷои сатр, ба монанди он, функсияи номаълумро бармегардонем:
function func() {
return function() {
return '!';
};
}
let result = func(); // дар тағирёбандаи result функсия хоҳад буд
console.log(result); // 'function() {return '!';}'-ро хориҷ мекунад
Чунон ки мебинед, тағирёбандаи result акнун
функсияро ташкил медиҳад. Биёед натиҷаи коркарди онро
ба консол хориҷ кунем. Барои ин қавсҳои доиравиро менависем:
function func() {
return function() {
return '!';
};
}
let result = func();
console.log( result() ); // '!'-ро хориҷ мекунад
Аз он ҷое ки даъвати func() функсия бармегардонад,
пас мо метавонем ҳамон дам ин функсияи баргардонидашударо
даъват кунем, ба ин тавр: func()() - якумин
қавсҳои доирави натиҷаи функсияи
func-ро мегиранд (ки худаш функсия мебошад),
ва қавсҳои доиравии дуюм ба натиҷаи
func татбиқ карда мешаванд.
Биёед санҷем:
function func() {
return function() {
return '!';
};
}
console.log( func()() ); // '!'-ро хориҷ мекунад
Функсияи func1-ро созед, ки вақте ки ба ин тавр
даъват карда шавад: func1()(), адади
1-ро баргардонад. Функсияи монанди
func2-ро созед, ки адади 2-ро бармегардонад.
Ҷамъи натиҷаҳои ин функсияҳоро ёбед.