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); }); ...