постоянно путаю
function declaration и function expression
function declarationfunction sayHi() { }
function expressionconst sayHi = function() { }
в чём же разница:declaration всплывает, expression не всплываеткак дэн абрамов из студента бонча с дутым макбуком стал самым популярным прогромистом в твиттере. люблю такие истории
https://overreacted.io/my-decade-in-review/
https://overreacted.io/my-decade-in-review/
overreacted.io
My Decade in Review — overreacted
A personal reflection.
читаемость важнее краткости (насчет стрелочных функций не соглашусь)
https://gomakethings.com/readability-is-more-important-than-brevity/
https://gomakethings.com/readability-is-more-important-than-brevity/
Gomakethings
Readability is more important than brevity
Often, web developers are obsessed with brevity. There’s this thing were developers will try to write the same function in the fewest number of characters possible.
Personally, I think brevity is pointless. Readability is a lot more important.
A competent…
Personally, I think brevity is pointless. Readability is a lot more important.
A competent…
cssчтобы зеркально отразить объект, можно использовать
transform: scaleX(-1);список анимируемых css-свойств
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_animated_properties
MDN Web Docs
Animatable CSS properties
Certain CSS properties can be animated using CSS Animations or CSS Transitions. Animation means that their values can be made to change gradually over a given amount of time.
как разные движки отрисовывают изменение css-свойств
https://csstriggers.com/
да уж, от вебкита я ожидала большего...
https://csstriggers.com/
да уж, от вебкита я ожидала большего...
CSS Triggers
CSS Triggers List - What Kind of Changes You Can Make
Check out our ultimate list of CSS triggers and learn which changes you can make on your website and it will affect your properties.
Во многих статьях про анимации упоминается
Вот отличная статья с демкой о том как начать работать с
и вот расширенная статья — https://developers.google.com/web/tools/chrome-devtools/evaluate-performance/reference#record
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
Chrome for Developers
Chrome DevTools | Chrome for Developers
Debug and optimize your web applications with Chrome DevTools.
Прошла курс от гугл про анимации (он классный и бесплатный) https://classroom.udacity.com/courses/ud860
единственный минус в том, что он был сделан в 2016 и с тех пор девтулзы изменились. Но после пары статей про вкладку
советую
итак, что же важного я узнала про анимации:
- анимировать
- анимировать
- анимировать только
- использовать
также следует помнить, что всё можно измерить
время для анимации на разных стадиях готовности приложения:
load 1000ms
idle 50ms
animation 10-12ms
response 100ms
на картинке — этапы обработки кода браузером
единственный минус в том, что он был сделан в 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 ведут себя таким образом.
Типы примитивов: 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 достаточно бессмысленное: оно сильно разнится от компании к компании, конкретных критериев нет, часто превращается в инструмент вычисления зарплаты из опыта работы.
Недавно посмотрел доклад Обретение навыков, где рассказывается достаточно стройная система измерения уровня программиста. Посмотрите, это поможет объективно оценивать свой уровень и уровень своих коллег.
#рост
Мне всегда казалось, что классическое программистское деление на junior-middle-senior достаточно бессмысленное: оно сильно разнится от компании к компании, конкретных критериев нет, часто превращается в инструмент вычисления зарплаты из опыта работы.
Недавно посмотрел доклад Обретение навыков, где рассказывается достаточно стройная система измерения уровня программиста. Посмотрите, это поможет объективно оценивать свой уровень и уровень своих коллег.
#рост
YouTube
Обретение навыков / Никита Прокопов
Saint AppsConf 2019
21 и 22 октября 2019, Санкт-Петербург
Подробности и билеты на сайте https://appsconf.ru/spb/2019
AppsConf 2018
Зал «Зал 1. Мне с тобою хорошо»
9 октября, 17:00
Тезисы и презентация:
http://appsconf.ru/2018/abstracts/3675
Как люди…
21 и 22 октября 2019, Санкт-Петербург
Подробности и билеты на сайте https://appsconf.ru/spb/2019
AppsConf 2018
Зал «Зал 1. Мне с тобою хорошо»
9 октября, 17:00
Тезисы и презентация:
http://appsconf.ru/2018/abstracts/3675
Как люди…
различия
extends и implementsextends — расширение классаimplements — реализация класса