Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Destructuring assignment для 2х переменных (https://javascript.ru/forum/offtopic/46305-destructuring-assignment-dlya-2kh-peremennykh.html)

Octane 05.04.2014 11:15

Destructuring assignment для 2х переменных
 
Может баян, что-то в голову стукнуло, раньше не видел, чтобы так делали:
[x, y] = [y, x]

//эквивалентно

x = [y, y = x][0]

если убрать пробелы, получается на 1 символ больше

Aetae 05.04.2014 12:13

Ога, тож недавно в статье на хабре эту фичу вычитал.)

melky 05.04.2014 12:27

хороший трюк! можно ссыль на статью?

DjDiablo 05.04.2014 12:40

усложнимс примерчик :)
var a=1, b=2, c=3, d=4;
d = [a, a=d, d=b, b=c, c=d][0];
alert([a, b, c, d]);

таки забавно)

melky 05.04.2014 12:47

ага, только читается плохо)

monolithed 06.04.2014 00:12

Цитата:

Сообщение от Octane
Может баян, что-то в голову стукнуло, раньше не видел, чтобы так делали

Хм. а какой из этих двух примеров тебя смущает?

Можно еще так делать:
let { x: f, y?: z } = { x: 'z' };

Octane 06.04.2014 01:27

Всмысле смущает? Я функцию для расчета промежутка времени между датами писал и не захотел переменную заводить, чтобы поменять даты местами, начал думать, как без переменной обойтись и пришол к такому варианту. Так как не видел раньше такого приема, решил сюда запостить, но Aetae говорит, что об этом на хабре писали.

Aetae 06.04.2014 06:49

http://habrahabr.ru/post/119898/
Оказывается это натыкался я недавно, а статья ажно '11 года.=)

Octane 06.04.2014 10:12

Видимо без знания о destructuring assignment такая запись в 2011 году никому не понравилась :)
Хотя на mdn как бы не раньше появились примеры с этими [x,y]=[y,x]

monolithed 06.04.2014 10:35

Цитата:

Сообщение от Octane
Так как не видел раньше такого приема, решил сюда запостить

А мне уж показалось, что ты увидел там какую-то магию :)

nerv_ 06.04.2014 18:52

Как писать неподдерживаемый код?

Aetae 06.04.2014 19:09

nerv_, ну так.)
Из той статьи собсно в нормальной практике только фича с массивом и применима.)

Gozar 06.04.2014 20:05

Я обычно в php использую $arr как обозначение "временного" массива на коротких дистанциях. Применять на больших кусках текста конечно вредно, но на коротких
"писать_много_букв_для_того_чтобы_в_7_строках_собрать_временный_массив_неудобно."


Еще есть $s, $s2, $3 и т.д. от вложенности :) Названия не имеют значения т.к. рядом лежит запрос. В остальном полностью согласен. Старая привычка php-одить, когда php дико тупило, если переменная была более 7 символов.

Единственная однобуквенная переменная которую я использую это q в corn. Ничего плохого в ней не нахожу. Corn правда консольная библ-а. В составе другой библ-ы она присутствует тоже как одна буква + namespace библ-ы.

Использовать транслит в программировании зло. Называя переменные англ. словами ты учишь язык.


По поводу повторного использования имен - каюсь. Больше так делать не буду, сам сомневался в разумности, было местами лень.

Octane 06.04.2014 20:35

Цитата:

Сообщение от Gozar
По поводу повторного использования имен - каюсь. Больше так делать не буду, сам сомневался в разумности, было местами лень.

Хз я не поддерживаю эту практику, вот писать var где-то в теле функции, а не в самом начале - это действительно зло. В грамотном коде, как правило, все разбито на небольшие функции, реюз переменной только слепые не заметят.

Gozar 07.04.2014 00:08

Кстати по поводу перекрытия имен переменных не понимаю порой как это можно избежать. Да по возможности, может и нужно, но причины особой не вижу - функция - есть замыкание, посему у нее свои переменные, то, что выше по контексту - выше по контексту.


Часовой пояс GMT +3, время: 18:55.