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

обратная связь: t.me/dmorenogogoleva
Download Telegram
постоянно путаю function declaration и function expression

function declaration
function sayHi() { }

function expression
const sayHi = function() { }


в чём же разница:

declaration всплывает, expression не всплывает
иногда стоит почитать комментарии на лерн.джаваскрипт
как дэн абрамов из студента бонча с дутым макбуком стал самым популярным прогромистом в твиттере. люблю такие истории

https://overreacted.io/my-decade-in-review/
css

чтобы зеркально отразить объект, можно использовать transform: scaleX(-1);
как разные движки отрисовывают изменение css-свойств


https://csstriggers.com/

да уж, от вебкита я ожидала большего...
Во многих статьях про анимации упоминается Timeline panel, но в современных девтулзах её нет. В 58 версии хрома её объединили с JavaScript CPU profiler и перенесли в Performance panel

Вот отличная статья с демкой о том как начать работать с Performance panel: https://developers.google.com/web/tools/chrome-devtools/evaluate-performance

и вот расширенная статья — https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference#record
Прошла курс от гугл про анимации (он классный и бесплатный) https://classroom.udacity.com/courses/ud860

единственный минус в том, что он был сделан в 2016 и с тех пор девтулзы изменились. Но после пары статей про вкладку performance я смогла перенести все измерения из девтулзов на видео в ирл девтулзы

советую

итак, что же важного я узнала про анимации:

- анимировать width и height — плохо
- анимировать clip и clip-path — тоже плохо

- анимировать только transform и opacity — хорошо
- использовать will-change — хорошо, но не стоит увлекаться

также следует помнить, что всё можно измерить

время для анимации на разных стадиях готовности приложения:
load 1000ms
idle 50ms
animation 10-12ms
response 100ms

на картинке — этапы обработки кода браузером
В JavaScript есть только примитивы и объекты.

Типы примитивов: boolean, null, undefined, bigint, number, string, и symbol.

Отличием примитива от объекта является то, что примитивы не имеют свойств или методов. Тем не менее, 'foo'.toUpperCase() преобразуется в 'FOO' и не вызывает TypeError. Это происходит потому, что при попытке получения свойства или метода у примитива (например, строки), JavaScript неявно обернет примитив объектом, используя один из классов-оберток (например, String), а затем сразу же уничтожит обертку после вычисления выражения. Все примитивы кроме null и undefined ведут себя таким образом.
вторым параметром JSON.stringify принимает replacer

replacer
может быть массивом или функцией

- массив определяет набор свойств, включаемых в объект в окончательной строке

- функция принимает ключ-значение по ходу преобразования и может с ними взаимодействовать

const settings = {
username: "anna",
level: 19,
health: 90
};

// массив

JSON.stringify(settings, ["level", "health"]);

// "{"level":19,"health":90}"


// функция

JSON.stringify(settings, (key, value) => {

if (typeof value === 'number') {
return undefined
}

return value;
});

// "{"username":"anna"}"
Forwarded from kamyshev.code
Обретение навыков

Мне всегда казалось, что классическое программистское деление на junior-middle-senior достаточно бессмысленное: оно сильно разнится от компании к компании, конкретных критериев нет, часто превращается в инструмент вычисления зарплаты из опыта работы.

Недавно посмотрел доклад Обретение навыков, где рассказывается достаточно стройная система измерения уровня программиста. Посмотрите, это поможет объективно оценивать свой уровень и уровень своих коллег.

#рост
различия extends и implements

extends — расширение класса

implements — реализация класса
главное отличие примитивных значений от сложных