I just had an quepiphany. Is it the lambda/scheme culture of defining scope via lambda and application that made javascript having 'only' functional scope ?
http://news.ycombinator.com/item?id=2786720
> Rather than dumb luck, I think a more meaningful interpretation is that I was a piece of an evolving system, exploring one particular path in a damn hurry. That system contains people playing crucial parts. Academic, business, and personal philosophical and friendship agendas all transmitted an analogue of genes: ideas and concrete inventions from functional programming and Smalltalk-related languages.
let x = t1 in t2 <=> (λx.t2) t1
So, it behaves in a sane way (you have lexical scoping for local variables too). There is no "functional scope".