Scala supports first-class functions that can be passed as arguments to other functions or stored in variables. Functions can be defined as local functions or anonymously as function literals. Function literals allow functions to be defined without a name. Closures are function values that capture free variables from their enclosing scope at runtime. This allows functions to access variables in the scope where they were defined even if that scope no longer exists.