Less controversial code quality check.

Change pattern that are prone to error, like function redefinition
and other.

Same as #7216  but twice smaller. 

I stil believe we should do something like that sooner than later as the huge disparity of code style make it really difficult to use tools like jshint that report hundreds of potential mistakes. 

If this is still controversial, I can do almost each fix independently. 
The `for ... in` - I understood that we can't use this anywhere in JS, because if some other code adds attributes to the prototype, they will show up in the loop, so it all needs to be done using `[].forEach()` or `$.map()`.