JavaScript support both. When first time JavaScript programme write then its goes to compile phase.
In compile phase the main purpose is making execution context. In this context compiler make global execution context and context for each function and the memory allocation for variable in stack those are possible( here hosting concept is implement).
After that code is moving forward for execution, and for that JavaScript used interpreter. Now interpreter execute each code line by line and make decision which is going to insert in execution context and which "function execution context" push into execution context and when when to pop item from execution context.
So easy way to remember is compiler used for make call stack/ execution context and interpreter for perform operation on call stack by reading code.