Я уже писал о некоторых аномалиях
if(false) function if_foo(){console.log("hello, I'm if_foo")}
if_foo() // hello, I'm if_foo
a="glob"
with({a: 1}){
function f(){console.log(a)}
}
f()// glob
foo=function(){console.log("first foo")}
function foo(){console.log("second foo")}
foo()// first foo
В целом, мне JS все ж таки нравится, но вот это говно меня реально бесит. Почему я должен постоянно думать, как компилятор будет хавать мой код? Что он инициализирует в первом проходе, что во втором? А главное, еще раз: ЗАЧЕМ ЭТО НУЖНО!!! Какой профит???