Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var self = this;
$("buttob").on("click", function() {
// do something with self
});
$("buttob").on("click", function() {
// do something with this
}.bind(this));
и когда будет нужно, просто выключим эту самую трансляцию
Map или Set обходить — через forEach? :))… мало того, даже синтаксиса для генераторов (а как без них, например, на koa писать? :)), геттеров / сеттеров нет. Потому как его развитие остановилось на IE6. Есть, конечно, LiveScript с его сахаром для многого, но и он уже не развивается. А классический кофе сейчас только для тех, кому лень больше вечера на изучение языка потратить или старый проект в рамках зажал.Object не является полноценным ассоциативным массивом, Map может принимать в качестве ключей что угодно, а не только строки, имеет свойство size, метод forEach и итераторы? :)values = `[...mapObject.values]`
for value in values
yaYa value
асинхронщины — yield и генераторы ввели
обходить через...
Array.from, что под катом spread в 6to5, но это, опять же, core-js или другой полифил. А ещё проще обходить через forEach.Но мееееедлено.
for-of работает с массивами без итераторов.Выходит фатальная ситуация: чем старше браузер, тем медленнее в квадрате (не оптимизированная JVM + тьма кода)
Так зачем учить язык, от которого сейчас больше вреда, чем пользы?
Надеюсь, вы понимаете, что добавили только поддержку синтаксиса, а не компиляцию, то есть можно использовать либо только на ноде 0.11+, либо после прогоняя через тот же 6to5 / регенератор?
А ещё проще обходить через forEach.
Как по мне, скорость критична только в современных, а в древних главное, что бы хоть как-то работало
forEach, погоняйте тесты. Преимуществ по скорости в мобильных браузерах у кофе, по сравнению с 6to5 в loose mode, я не вижу.for v in array (coffee) и forEach (массив ли, мап или сет, не суть). Прогонял и не раз. Год назад была от пол порядка до порядка. М.б. протокол итераторов так непрост и в принципе не быстр. Не имел возможности проверить.forEach, вы сравниваете скорость обхода массива по индексу с обходом не индексированных коллекций по протоколу итераторов, и удивляетесь, что скрытый вызов метода next итератора медленнее получения элемента по индексу. Ладно бы хоть с обходом объекта через for-in сравнили, всё ближе…В ES6 скобки требуется вне зависимости от наличия параметров:
[1, 2, 3].map(n => n * n); // неявный return
foo(a => {
console.log(a);
});
() => {}«JavaScript strings can only span a single line »
initRemoteStrategy({
next: ({idx, array}) => idx + 1,
prev: ({idx, array}) => idx - 1
},
err => err ? reject() : resolve())
f = ->
if a
b
else
c
var f;
f = function() {
if (a) {
return b;
} else {
return c;
}
};
foo = (arr) =>
for i in arr
console.log(i)
var foo;
foo = (function(_this) {
return function(arr) {
var i, _i, _len, _results;
_results = [];
for (_i = 0, _len = arr.length; _i < _len; _i++) {
i = arr[_i];
_results.push(console.log(i));
}
return _results;
};
})(this);
for (var key in props) {
if (!props.hasOwnProperty(key)) {
continue;
}
style[key] = props[key];
}
for own key, value of props
style[key] = value
[1, 2, 3].filter(i => i % 2 === 0).map(i => i * i)
arr
.map( entry => entry.length)
.filter( len => len > 10)
.sort()
Например, если используется arrow-function, обязательно будет обертка в this, даже если this внутри не используется.Да, при использовании fat arrow (=>), которую вы скорее всего имеете в виду, всегда появляется обёртка для this. Для этого и придумана fat arrow. Не надо использовать её везде. Обычно хватает обычной arrow, при которой в this ничего не заворачивается:
f = (x) -> x+1
Не надо так делать:f = (x) => x+1
f = (x) => `this.foo()`
[1, 2, 3].map(i => i * i), то есть для коротких колбеков, которые можно прочитать на одной строке.Например, если используется arrow-function, обязательно будет обертка в this, даже если this внутри не используется.
Disallows defining functions with fat arrows when `this` is not used within the function.
default level: warn
Меняем CoffeeScript на ES6