Javascript. Поменяйте местами две переменные. Как это устроено?
Увидел в одном источнике следующее:
[param_o,param_got] = [param_got,param_o];
Этот код поменять местами переменные param_o
& param_got
.Но как [param_o,param_got] = [param_got,param_o]
работает, если []
это новый экземпляр Array
в JavaScript
РЕДАКТИРОВАТЬ Попробуйте проверить:
var param_o = 1;
var param_got = 2;
[param_o,param_got] = [param_got,param_o];
console.log(param_o+" "+param_got);
// 2 1
1 ответ
Эта нотация называется деструктурирующим присваиванием и является частью Javascript 1.7:
Разрушающее присваивание позволяет извлекать данные из массивов или объектов, используя синтаксис, который отражает построение массивов и литералов объектов.
Литеральные выражения объекта и массива обеспечивают простой способ создания специальных пакетов данных. После того, как вы создали эти пакеты данных, вы можете использовать их так, как хотите. Вы даже можете вернуть их из функций.
Одна особенно полезная вещь, которую вы можете сделать с деструктурирующим присваиванием - это прочитать всю структуру в одном выражении.
Первый пример фактически демонстрирует, что это полезно, чтобы избежать временных переменных, как в вашем примере кода.
Firefox уже поддерживает эту функцию начиная с Firefox 2. Для Chrome ошибка все еще открыта через 3 года. IE11 также не поддерживает это из того, что я только что протестировал.