JavaScript хаки для ES6 хіпстерів

3 хв. читання

Хіпстерський хак #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.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.9K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація