If we take "Functions" as a baseline, then we have...
Floating Functions / First class functions (thanks to comments for reminding): Functions that can be passed around as variables. e.g. All functions in Javascript are floating functions.
function callback() { ... }
// function assigned to a variable
var x = callback;
// function is an argument to another function
doSomething(..., callback)
Anonymous functions: functions with no name. // an anonymous function
(function() { .... })()
// anonymous function as an argument
doSomething(..., function() { .... })
Lambda functions: A style of writing functions without a block, where the function and return value are expressed as one single expression without the usage of a block or explicit returns. employee => employee.name
Closures: When a function references a variable outside its scope, and that "frees" the variable from its normal lifetime, thus creating a "closure" between the function and the now-free variable. function a() {
var x = 1;
return function() {
// here a closure is created
// now "x" outlives its lifetime and
// becomes a free variable
return x + 1;
}
}