Overriding a variable declared in an outer scope can strongly impact the readability, and therefore the maintainability, of a piece of code. Further, it could lead maintainers to introduce bugs because they think they're using one variable but are really using another.

## Noncompliant Code Example

    show: function(point, element) {
      if (!this.drops.length) return;
      var drop, affected = [];
      this.drops.each( function(drop) {  // Non-Compliant; defines a new 'drop' parameter
        if(Droppables.isAffected(point, element, drop))
          affected.push(drop);
      });

## Compliant Solution

    show: function(point, element) {
      if (!this.drops.length) return;
      var drop, affected = [];
      this.drops.each( function(aDrop) {
        if(Droppables.isAffected(point, element, aDrop))
          affected.push(aDrop);
      });