Почему «кококо кудкудах язык развивается завезли новые фичи (прямо из 70-х, ага) у меня es2017 stage-0 в пердакшене я транспилер подключил и всё ок» — это хуета. Нет, не так. ХУЕТА.
Вот вам пример сахара. Проще некуда: `a, b = b, a`
В ES6 (2015) завезли (ура!). Но с уёбищным синтаксисом через деструктуризацию: `[a, b] = [b, a]` JS-движки оптимизируют, конечно, и не будут создавать массив. Ну хуй с ним, с синтаксисом. Посмотрим, как транспилит это модный бэйбл:
```
[foo, baz, bar] = [bar, baz, foo]
```
=>
```
var _ref = [bar, baz, foo];
foo = _ref[0];
baz = _ref[1];
bar = _ref[2];
```
Ожидаемо.
Теперь вопрос. Насколько создание объекта (массива) и индексирование (три раза) будет медленнее прямого обмена референсов? Или даже ручного обмена с временной переменной?
А потом приложения в браузере тормозят на топовых железках, ага.
Поиграться в бэйблским реплом:
https://babeljs.io/repl/#?evaluate=false&lineWrap=false&presets=es2015&code=%5Bfoo%2C%20baz%2C%20bar%5D%20%3D%20%5Bbar%2C%20baz%2C%20foo%5D
жид-компилятор не оптимизирует ли это дальше?