satyr / coco

Unfancy CoffeeScript
http://satyr.github.com/coco/
MIT License
498 stars 48 forks source link

Cascades in one closure get same varname #190

Closed akx closed 11 years ago

akx commented 11 years ago
$('#something')
  &click !-> blah(&attr("foo"))

$('#somethingelse')
  &click !-> blah(&attr("bar"))

compiles to

var x$;
x$ = $('#something');
x$.click(function(){
  blah(x$.attr("foo"));
});
x$ = $('#somethingelse');
x$.click(function(){
  blah(x$.attr("bar"));
});

which causes problems with the first click handler's x$ referring to the second one due to lexical scope.

I know this could be easily circumvented with let but I still think this is counter-intuitive behavior.

Feel free to close if I'm wrong :)

satyr commented 11 years ago

You're right. Apparently it shouldn't reuse the same variable.