In class, I learned that function declarations are hoisted, as well as variables so that they can be used before they are declared. In that case though, why does this throw