Dude! Same here! 15 years of Java, starting from university, and then JS. Why can they access a var that’s declared in an inner scope? Weird. Why do they call a function and then do something that looks like function redefinition, and apparently works? Incomprehensible. bind, apply? No, thanks.
This is the best moment to learn JS: it’s full of videos, resources and cool people.