Overriding a variable declared in an outer scope might highly impact the readability and so maintainability of a piece of code.
The following code snippet illustrates this rule :
show: function(point, element) {
if (!this.drops.length) return;
var drop, affected = [];
this.drops.each( function(drop) { // Non-Compliant as the 'drop' parameter is not the one defined one line before even if it looks like
if(Droppables.isAffected(point, element, drop))
affected.push(drop);
});
...