The document discusses several key aspects of JavaScript functions including:
1. Functions can be defined in 3 ways - with the function keyword, a function expression, or a function declaration.
2. Closures allow functions to access variables from outer scopes even after the outer function has closed. This allows functions to cache values.
3. Functions are objects that can be passed around and assigned to variables like any other object.
4. Prototypal inheritance is used in JavaScript to inherit properties and methods from one object to another using prototypes.
5. The this keyword is dynamically bound based on the invocation context of a function. Understanding how this works is important for using objects correctly.