Sure that will prevent gc, but that doesn't mean it's a memory leak
It is if the variable is accidentally in global scope due to hoisting if it is not explicitly defined in a finer scope. Not an issue in strict mode, you'll get a reference error instead of an implied global.
If you're never going to use it again, and you're never going to free it, it's a memory leak.
No, it is not. A memory leak has to grow.
Without the leak part, it is just ...allocated memory.