I'm having a bit of trouble understanding why my code works. I'm expecting a reference error, but everything works fine.
My code:
const functionA = () => {
let bResult = functionB();
console.log("Function A " + bResult);
};
const functionB = () => {
return "Function B";
};
functionA();
I get this output (no errors);
λ node test.js
Function A Function B
As I understand it, only function declarations are hoisted (not function expressions) http://adripofjavascript.com/blog/drips/variable-and-function-hoisting.html.
Thus, shouldn't I expect an error as FunctionB isn't defined before it's called in FunctionA? Am I missing somewhere here?
EDIT: Thanks for the answers everyone, I think I figured it out. It's indeed not getting hoisted because if I call functionA at the beginning, it gives me an error.
functionA(); // ReferenceError: functionA is not defined
const functionA = () => {
let bResult = functionB();
console.log("Function A " + bResult);
};
const functionB = () => {
return "Function B";
};
So it's not a question of hoisting. Rather, by the time functionA is called at the end of the file, both functionA and functionB have been defined.