Подтвердить что ты не робот

Что означает соединение let/const?

В wiki библиотеки Bluebird есть статья Убийцы оптимизации. В этой статье есть фраза:

В настоящее время не оптимизируется:
...
Функции, содержащие составное присвоение присвоения Функции, содержащие составное задание const

Что означает соединение, задающее присвоение и составное назначение const? В ECMAScript 5.1 было понятие составное назначение, но в ECMAScript 2015, кажется, нет никакого понятия о каком-либо составном назначении, есть только регулярные присвоения.

Я подозреваю, что соединение let и const присваивание, это просто составное назначение после объявления. Например:

let n = 1;
n += 4;

Я прав?

4b9b3361

Ответ 1

Да, это похоже на то, что это значит. У меня был следующий код (ненужные дополнительные строки удалены):

function updatePlayer(player) {
    let direction = player.getDirection();
    if (player.isPressingLeft()) {
        direction += angleChange;
    }
    if (player.isPressingRight()) {
        direction -= angleChange;
    }
    player.setDirection(direction);
}

updatePlayer сгенерировано предупреждение. Не оптимизировано: Неподдерживается, пусть составное назначение на вкладке "Профили Chrome", поэтому я попробовал = ... + вместо += и получил значительное, последовательное повышение производительности.

jsPerf показывает, что let составные назначения действительно очень медленны в Chrome 49.0.2623 по сравнению с + ... = или var! Я предполагаю, что это будет исправлено в будущей версии, поскольку ни Firefox, ни IE11, ни Edge не затронуты, и поскольку Google, очевидно, знает об этой проблеме.