1. Scala allows functions to be treated as first-class objects. Functions are represented by traits like Function1 that define an apply method.
2. Functions can be passed as arguments to other functions, returned as results, and assigned to variables. This allows for higher-order functions and partial function application in Scala.
3. Closures are functions that reference variables from outer scopes even after the scope they were defined in has closed. This allows functions to maintain state even after being passed around.