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
всегда пропускала эту задачу, но сегодня решила

(это из книжки "выразительный джаваскрипт")
const getString = (len = 4) => {
const arr = ['#']

for (i = 0; i < len; i++) {
if (arr[i - 1] === '#') {
arr.push(' ')
} else if (arr[i - 1] === ' ') {
arr.push('#')
}
}

arr.push('\n')

return arr.join('')
}


const getDesk = (width = 8, height = 8) => {
const str = getString(width)
const arr = []


for (i = 0; i < height; i++) {

if (i % 2 === 0) {
arr.push(str + ' ')
} else {
arr.push(str)
}

}

return arr.join('')
}

console.log(getDesk())