Scope

    Functions declared with the function keyword are "hoisted" to the top of the block, and can be called anywhere within the block.

    Usually we try to declare functions before we use them, for clarity. However, this is common for mutually recursive function definitions, similar to forward declarations in some C-like languages.