В JS функции являются гражданами первого класса. Это значит, среди всего прочего, что их можно передавать в качестве аргументов в другие функции и возвращать в качестве результата.
function say (str1) {
return function (str2) {
return str1 + str2;
}
}