Scala allows functions to be treated as first-class objects. Functions are represented by traits like Function1 that define an apply method. This allows functions to be assigned to variables and passed as arguments. Functions can also have default parameter values specified. Nested functions can be defined inside other functions.