Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Даже опытные профи часто делают подобную ошибку, особенно когда объявляют переменные сцеплением: var a = 1, b = 2 и присваивают новое значение, глобальной переменной b.

changeNumbers = ->
inner = -1
outer = 10
inner = changeNumbers()
changeNumbers = function() {
var inner;
inner = -1;
return outer = 10;
};
Асинхронный функционал
for i in [1..3]
setTimeout (-> console.log i), 0
loop: function () {
for (var i = 1; i <= 3; i++) {
this.asyncLog(i);
}
},
asyncLog: function (i) {
setTimeout(function() { console.log(i); }, 0);
}
for (var i = 1; i <= 3; i++) {
setTimeout(console.log.bind(console, i), 0);
}
changeNumbers = ->
inner = -1
outer = 10
inner = changeNumbers()
inner()(function() {
var changeNumbers, inner;
changeNumbers = function() {
var inner, outer;
inner = -1;
return outer = 10;
};
inner = changeNumbers();
inner();
}).call(this);
CoffeeScript в деле — Пять вещей, которые можно сделать и с JavaScript