satyr / coco

Unfancy CoffeeScript

Home Page:http://satyr.github.com/coco/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cascades in one closure get same varname

akx opened this issue · comments

$('#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 :)

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