Skip to content

Instantly share code, notes, and snippets.

@igenex
Created November 8, 2017 14:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save igenex/b4886df3e6fb6d674d02fe43919eb16e to your computer and use it in GitHub Desktop.
Save igenex/b4886df3e6fb6d674d02fe43919eb16e to your computer and use it in GitHub Desktop.
ES6 - Деструктивное присваивание
/*==================================================
= Деструктивное присваивание =
==================================================*/
{
let myArr = [1, 2, 3];
let a, b, c;
[a, b, c] = myArr;
//Или еще более короткий
let [a, b, c] = [1, 2, 3];
}
//Игнорирование значений
{
let [a, , b] = [1, 2, 3];
console.log(a, b); //Выведет 1, 3
let [a, , , ...b] = [1,2,3,4,5,6];
console.log(a); // 1
console.log(b); //4,5,6
}
// Использоавние оператора расширения в деструктивном присваивании массивов
let [a, ...b] = [1, 2, 3, 4, 5, 6];
console.log(a); //Выведет 1
console.log(Array.isArray(b)); //Выведет true
console.log(b); //Выведет 2,3,4,5,6
// Значения по умолчанию для переменных
let [a, b, c = 3] = [1, 2];
console.log(c); //Выведет 3
// Деструктивное присваивание вложенных массивов
let [a, b, [c, d]] = [1, 2, [3, 4]];
// Использование деструктивного присваивания как параметра
{
let myFunc_1([a, b, c = 3]) {
console.log(a,b,c); // Выведет "1 2 3"
}
myFunc_1([1, 2]);
//Выведет значение по умолчанию
let myFunc_2([a, b, c = 3] = [1, 2, 3]) {
console.log(a, b, c); //Выведет "1 2 3"
}
myFunc_2(undefined);
}
// Деструктивное присваивание объектов
// Было
{
let obj = {"name" : "John", "age" : 23};
let name = obj.name;
let age = obj.age;
}
// Стало
// Имена переменных должны совпадать с именами свойств
{
let obj = {"name" : "John", "age" : 23};
let name, age;
({name, age} = obj);
}
// Если требуются другие переменные
{
let obj = {"name" : "John", "age" : 23};
let x, y;
({name:x, age:y} = obj);
// или если короче
let {name:x, age:y} = {"name":"John", "age":23};
}
// Значеиня по умолчанию для переменных
{
let {a, b, c = 3} = {a:1, b:2};
console.log(c); //Выведет 3
}
// Вычисляемые имена свойств в деструктивном присваивании
{
let {["first" + "Name"] : x} = {firstName : "Eden"};
consoe.log(x); //Выведет Eden
}
// Деструктивное присваивание вложенных объектов
{
let {name, otherInfo: {age}} = {name: "Eden", otherInfo: {age: 23}};
console.log(name, age); //Eden 23
}
// Использование деструктивного присваивания объекта как параметра
{
let myFunc_1({name = "Eden", age = 23, profession = "Designer"} = {}) {
console.log(name, age, professtion); //Выведет John 23 Designer
}
myFunc_1({name: "John", age: 23});
}
/*===== End of Деструктивное присваивание ======*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment