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

обратная связь: t.me/dmorenogogoleva
Download Telegram
Очень большие и очень малые числа с плавающей точкой можно представлять
в экспоненциальном формате (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())
Предположим, что мы хотим использовать самую простую регулярку для поиска подстроки «кот» в строке «который раз одно и то же».

Вот она:

const reg = /кот/g


Флаг g (global) означает, что регулярка применяется ко всей строке, то есть поиск не прекращается после обнаружения первого совпадения.
Звучит как что-то полезное.
Но если мы запустим это выражение на нашей строке, то каждый второй раз оно будет возвращать false.

const str = "который раз одно и то же"

reg.test(str)
true
reg.test(str)
false
reg.test(str)
true
reg.test(str)
false


При первом вызове test() совпадение обнаруживается, но в следующей итерации поиск начинается с индекса 3 (конец первого совпадения) (wtf) и завершается ничем. После достижения конца строки и перехода к следующей итерации метод test() снова начинает поиск с начала строки.

Проверить это можно через свойство lastIndex

reg.lastIndex
0
// мы еще не запустили проверку и lastIndex равен нулю

reg.test(str)
true

reg.lastIndex
3
// вот здесь-то и начинаются непонятки


Избежать этого можно несколькими способами:

- не указывать флаг g
- присваивать 0 свойству lastIndex после каждого вызова reg.lastIndex = 0
- каждый раз перед проверкой создавать новую регулярку
https://www.youtube.com/watch?v=IHPjaECmtCo&feature=youtu.be&t=953

доклад, после которого я установила tldr в консоль и сделала бесполезного бота

tldr — полезная штука, которая прямо в консоли показывает, для чего используется та или иная комада

npm install -g tldr
постоянно путаю function declaration и function expression

function declaration
function sayHi() { }

function expression
const sayHi = function() { }


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

declaration всплывает, expression не всплывает
иногда стоит почитать комментарии на лерн.джаваскрипт