Хіпстерський хак #1 - Swap змінних
Дві змінні можуть обмінятися значеннями за допомогою одного деструктуризаційного виразу.
let a = 'world', b = 'hello'
[a, b] = [b, a]
console.log(a) // -> hello
console.log(b) // -> world
// Все вірно, магія!
Хіпстерський хак #2 - Async/Await в поєднанні з деструктуризацією
І знову чудова деструктуризація на прикладі масиву. В поєднанні з async/await
та промісами складні речі стають простішими.
const [user, account] = await Promise.all([
fetch('/user'),
fetch('/account')
])
Хіпстерський хак #3 – Відлагодження
Для тих, хто не уявляє процес відлагодження без console.log
, є дивовижна річ (звісно, я чув про console.table
)
const a = 5, b = 6, c = 7
console.log({ a, b, c })
// отримаємо ось це:
// {
// a: 5,
// b: 6,
// c: 7
// }
Хіпстерський хак #4 — Стрілкові функції
Завдяки стрілковим функціям синтаксис стає більш компактним. Поглянемо, як це працює для масиву.
// Знайти max значення
const max = (arr) => Math.max(...arr);
max([123, 321, 32]) // outputs: 321
// Сума масиву
const sum = (arr) => arr.reduce((a, b) => (a + b), 0)
sum([1, 2, 3, 4]) // output: 10
Хіпстерський хак #5 – Оператор розпакування
Коли потрібно створити новий масив так, щоб якийсь наявний був його частиною, старого синтаксису оголошення масиву не достатньо, та необхідно використовувати комбінацію методів push
, splice
, concat
, тощо. З оператором розпакування це стає значно лаконічніше:
const one = ['a', 'b', 'c']
const two = ['d', 'e', 'f']
const three = ['g', 'h', 'i']
// По старому #1
const result = one.concat(two, three)
// По старому #2
const result = [].concat(one, two, three)
// По новому
const result = [...one, ...two, ...three]
Хіпстерський хак #6 – Клонування
І знову оператор розпакування полегшує нам життя.
const obj = { ...oldObj }
const arr = [ ...oldArr ]
Але слід зауважити, що оператор розпакування при копіюванні масиву йде лише на один рівень вглиб. Таким чином він не придатний для копіювання багатовимірних масивів, що видно з наступного прикладу (те саме з Object.assign()
та розпакуванням об'єктів).
var a = [[1], [2], [3]];
var b = [...a];
b.shift().shift(); // 1
// Тепер масив a також змінено: [[], [2], [3]]
Хіпстерський хак #7 – Оголошені параметри
Деструктуризація дозволяє зробити оголошення та виклик функцій більш зрозумілим.
const getStuffNotBad = (id, force, verbose) => {
...do stuff
}
const getStuffAwesome = ({ id, name, force, verbose }) => {
...do stuff
}
// Можна втратити голову з цими true, true
getStuffNotBad(150, true, true)
// А от так все стає ясніше.
getStuffAwesome({ id: 150, force: true, verbose: true })
Вже давно про це знаєте? Тоді ви реальний хіпстер, або просто цікавитесь ES6.
Ще немає коментарів