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

обратная связь: t.me/dmorenogogoleva
Download Telegram
вчера на собесе попросили написать на листочке функцию, которая считает количество вызовов самой себя

на листочке очень просто запутаться со скобочками кстате
Хвостовая рекурсия

это такой способ оптимизации рекурсивных функций
вот обычная рекурсивная функция, которая вычисляет факториал
а вот она же после хвостовой оптимизации
что тут произошло?

мы добавили параметр cur в который записываем текущий результат

это позволяет уменьшить количество фреймов, хранимых в памяти
нашла хорошую картинку

слева — хвостовая рекурсия, справа — обычная

как мы видим, у хвостовой меньший уровень вложенности

картинка вот из этой статьи:
https://maxglassie.github.io/2017/08/24/tail-recursion.html
главная польза от иммутабельности в реальной жизни

когда мы следуем принципам иммутабельности, мы не мутируем объекты, а пересоздаем.

и когда после пересоздания мы сравниваем объекты, они оказываются разными (пушто на них разные ссылки) и так мы можем легко понять, что в объекте что-то изменилось
Значения с плавающей точкой

Чтобы определить значение с плавающей точкой, необходимо ввести десятичную
точку и как минимум одну цифру после нее.

10.1


Для хранения значений с плавающей точкой требуется вдвое больше памяти, чем для целых чисел и ECMAScгipt по возможности преобразует значения в целые числа. Если после десятичной точки нет разрядов, число становится целым.

Если значение не имеет дробной части (например, 1 .0), оно также преобразуется в целое число, например:
Очень большие и очень малые числа с плавающей точкой можно представлять
в экспоненциальном формате (e-notation), в котором значения умножаются на 10
в соответствующей степени

var floatNum = 3 . 125е7 

// 31250000
Можете понимать эту запись как умножение числа 3.125 на 10^7
Значения с плавающей точкой представляются с точностью до 17 -го десятичного разряда, но все равно они гораздо менее точны в арифметических вычислениях, чем
целые числа.

Например, сложение 0.1 и 0.2 дает в результате 0.30000000000000004 вместо 0.3.
Ошибки округления - это побочный эффект арифметических операций над числами
с плавающей точкой формата IEEE-754, а не особенность ECMAScript. В других языках,
в которых используется этот формат, наблюдаются такие же проблемы.
можно получить бесконечность, поделив на ноль
Наконец-то вчера сделала сниппет для создания компонентов в vs code.
Создавать свои сниппеты просто и приятно и они улучшают девелопер экспириенс в миллион раз

Документация лежит тут: https://code.visualstudio.com/docs/editor/userdefinedsnippets

А вот удобнейший сниппет-генератор: https://snippet-generator.app
Статья (с примерами кода) о том, как пара строчек css помогают докручивать элементы до края экрана

https://css-tricks.com/practical-css-scroll-snapping/
Forwarded from Про
#nestjs

a module becomes a singleton when being wrapped in @Injectable decorator
всегда пропускала эту задачу, но сегодня решила

(это из книжки "выразительный джаваскрипт")