Scope: The area within a program where a variable can be accessed and used. Closures are closely tied to the concept of scope, as they allow a function to access variables from its outer scope, even after the outer function has finished executing.
Lexical Scoping: The way in which variables are resolved in a programming language, based on the location where the variable is defined in the source code. Closures rely on lexical scoping to maintain access to variables from the outer function.
Higher-Order Functions: Functions that can take other functions as arguments or return functions as their output. Closures are often used in conjunction with higher-order functions, as they allow for the creation of functions that can be customized and reused.