code_notes
71 subscribers
136 photos
1 video
134 links
учусь делать веб

обратная связь: t.me/dmorenogogoleva
Download Telegram
каррирование

программисткое понятие, обозначает функцию с множеством скобочек. Каррирование нужно для применения функций по частям. Иногда это действительно бывает удобно.

const curry = (a) => (b) => a + b;

const plusTwo = curry(2)

plusTwo(3)
// 5
итак я дочитала первую часть учебника
из чего же состоит джаваскрипт по впечатлениям оттуда

10% — типы данных, разные типы данных, символы, мапы, викмапы, массивы, объекты (про объекты будет чуть позже), число не отличить от строки, когда оно приходит с сервера, конст не работает, смиритесь с этим

50% — объекты. Давайте создавать объекты, давайте наследовать объекты, давайте объектам задавать прототипы, всё есть объект. Ни в коем случае не теряйте контекст

30% — функции. Функции могут создавать объекты, можно через функции устанавливать прототип для объектов (но это не совсем тот прототип, что передается через объекты), вот новый синтаксис для создания объектов через функции, не забудьте про конструктор, но есть ещё и обычные функции

10% — промисы, генераторы, ошибки, ивент луп, функциональное программирование
немного про гриды

есть свойства justify-items, justify-content, align-items, align-content и они совершенно неразличимы
но я уловила

justify — влияет на ряды и элементы внутри рядов
align — влияет на колонки и элементы внутри колонок

items — влияет на элементы внутри рядов или колонок
content — влияет на расположение рядов/колонок внутри грида
align-items: start
align-content: start
justify-items: start
justify-content: start
все возможные варианты:
auto
normal
start
end
center
stretch
baseline
first baseline
last baseline
главное, что стоит помнить про гриды:

- все их элементы по умолчанию имеют все выраванивания типа stretch и это часто бывает очень неудобно, так что можно сразу это сбрасывать
- из-за какого-то внутреннего бага все элементы грида имеют странные настройки min-width / min-height так что их тоже стоит сбрасывать
у нас на работке есть миксин:

display: grid; 

* > {
min-width: 0;
min-height: 0;
}
Forwarded from Про
How to use nulish coalescing with destructuring

const {a} = (b.c?.d?.e || {})
в субботу обнаружила, что путаю fifo и lifo

FIFO — first in, first out — это обычная очередь
LIFO — last in, first out — это stack (пачка карт например)
вторая часть учебника назвается «Браузер: документ, события, интерфейсы» и вообще не показалась мне интересной — либо всё то, что я уже знаю, либо информация, которую сложно использовать ирл

самая полезная статья — про ивенлуп, микротаски, макротаски, всё такое
https://learn.javascript.ru/event-loop
что такое макротаски и микротаски?

макротаск это setTimeout

микротаск это промис

сначала выполняется макротаск, потом все микротаски в очереди, потом другой макротаск (если он есть)

то есть порядок выполнения этого кода
Promise.resolve().then(() => console.log('first'))

setTimeout(() => {
console.log('second')
}, 0)


console.log('third')


будет такой
log: "third"


log: "first"


log: "second"
1. макротаск — запуск скрипта
2. синхронный код (third)
3. микротаск — промис(first)
4. следующий макротаск(second)
вроде всё понятно
но что еще является макротасками и микротасками кроме промисов и setTimeout?
[JavaScript] напишите функцию, которая вернёт n-ное самое большое число

largestN([2, 4, 1, 5, 3], 1) // 5
largestN([2, 4, 1, 5, 3], 2) // 4
largestN([1, 8, 3, 2], 4) // 1


сначала я написала:
const largestN = arr => Math.max(...arr)

а потом вчиталась в задачу — не самое большое число, а n-ное самое большое. то есть второе по большести или пятое по большести

второй вариант (работает как надо):
const largestN = (arr, index) => arr.sort((a, b) => -a - -b)[index - 1]
Я приостановила чтение учебника Кантора (прототипы в нем закончились, а остальное меня не интересует) и начала читать «Функциональное программирование на JavaScript» от Луиса Атенсио