Очень большие и очень малые числа с плавающей точкой можно представлять
в экспоненциальном формате (e-notation), в котором значения умножаются на 10
в соответствующей степени
в экспоненциальном формате (e-notation), в котором значения умножаются на 10
в соответствующей степени
var floatNum = 3 . 125е7Можете понимать эту запись как умножение числа 3.125 на 10^7
// 31250000
Значения с плавающей точкой представляются с точностью до 17 -го десятичного разряда, но все равно они гораздо менее точны в арифметических вычислениях, чем
целые числа.
Например, сложение 0.1 и 0.2 дает в результате 0.30000000000000004 вместо 0.3.
целые числа.
Например, сложение 0.1 и 0.2 дает в результате 0.30000000000000004 вместо 0.3.
Ошибки округления - это побочный эффект арифметических операций над числами
с плавающей точкой формата IEEE-754, а не особенность ECMAScript. В других языках,
в которых используется этот формат, наблюдаются такие же проблемы.
с плавающей точкой формата IEEE-754, а не особенность ECMAScript. В других языках,
в которых используется этот формат, наблюдаются такие же проблемы.
Создавать свои сниппеты просто и приятно и они улучшают девелопер экспириенс в миллион раз ✨
Документация лежит тут: https://code.visualstudio.com/docs/editor/userdefinedsnippets
А вот удобнейший сниппет-генератор: https://snippet-generator.app
Документация лежит тут: https://code.visualstudio.com/docs/editor/userdefinedsnippets
А вот удобнейший сниппет-генератор: https://snippet-generator.app
Visualstudio
Snippets in Visual Studio Code
It is easy to add code snippets to Visual Studio Code both for your own use or to share with others on the public Extension Marketplace. TextMate .tmSnippets files are supported.
Между прочим отличный доклад Ивана Акулова о простых способах оптимизировать перформанс в 2019
https://youtu.be/iEv1rFujYm4
https://youtu.be/iEv1rFujYm4
YouTube
Быстрые приложения в 2019 / Иван Акулов (PerfPerfPerf )
Приглашаем на FrontendConf 2024, которая пройдет 30 сентября и 1 октября 2024 в Москве.
Программа, подробности и билеты по ссылке: https://frontendconf.ru/moscow/2024
________
РИТ++ 2019
Frontend Conf
Тезисы и презентация:
http://frontendconf.ru/moscow…
Программа, подробности и билеты по ссылке: https://frontendconf.ru/moscow/2024
________
РИТ++ 2019
Frontend Conf
Тезисы и презентация:
http://frontendconf.ru/moscow…
Статья (с примерами кода) о том, как пара строчек css помогают докручивать элементы до края экрана
https://css-tricks.com/practical-css-scroll-snapping/
https://css-tricks.com/practical-css-scroll-snapping/
CSS-Tricks
Practical CSS Scroll Snapping | CSS-Tricks
CSS scroll snapping allows you to lock the viewport to certain elements or locations after a user has finished scrolling. It’s great for building interactions
Forwarded from Про
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())Предположим, что мы хотим использовать самую простую регулярку для поиска подстроки «кот» в строке «который раз одно и то же».
Вот она:
Флаг
Звучит как что-то полезное.
Но если мы запустим это выражение на нашей строке, то каждый второй раз оно будет возвращать
При первом вызове test() совпадение обнаруживается, но в следующей итерации поиск начинается с индекса 3 (конец первого совпадения) (wtf) и завершается ничем. После достижения конца строки и перехода к следующей итерации метод test() снова начинает поиск с начала строки.
Проверить это можно через свойство
Избежать этого можно несколькими способами:
- не указывать флаг
- присваивать 0 свойству lastIndex после каждого вызова
- каждый раз перед проверкой создавать новую регулярку
Вот она:
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 declarationfunction sayHi() { }
function expressionconst sayHi = function() { }
в чём же разница:declaration всплывает, expression не всплывает