Created
November 8, 2017 14:14
-
-
Save igenex/b4886df3e6fb6d674d02fe43919eb16e to your computer and use it in GitHub Desktop.
ES6 - Деструктивное присваивание
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*================================================== | |
= Деструктивное присваивание = | |
==================================================*/ | |
{ | |
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