@iceflash, в js, кстати, с переменными всё отлично, особенно с приходом ecmascrit6, где появилась статика и классы(не совсем понимаю зачем они нужно в прототипно-ориентированном языке). Так как в js присутствует функциональное программирование, то, естественно, переменные на разном хойстинге и замыкании ведут себя по-разному, что даёт лишь невероятную гибкость.