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
Так как не видел раньше такого приема, решил сюда запостить

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


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