¿Pasar variable local con el nombre de una variable global no es posible en JS?

foo = "foobar";
var bar = function(){
    var foo = foo || "";
    return foo;
}
bar();`

Este código da un resultado de cadena vacía. ¿Por qué JS no puede reasignar una variable local con el mismo nombre que una variable global? En otros lenguajes de programación, el resultado esperado es, por supuesto, "foobar", ¿por qué JS se comporta así?

Respuestas a la pregunta(2)

Su respuesta a la pregunta