Considered as values that can be manipulated and used in flexible ways

  1. Assigned to variables
  2. Passed as arguments to other functions
  3. A function can be the return value of another function
  4. Can store functions in data structures like Array, List, or Hash Map

Enables powerful programming techniques in Programming Paradigms like