Может быть конвертация строки в число сама по себе простая операция, но только не в JavaScript, где существует множество возможностей выстрелить себе в ногу. Валерий Карпов в статье "Convert a String to a Number in JavaScript" описывает суть проблемы с конвертированием и приводит возможные решения с хорошим объяснением нюансов.
Автор предлагает использовать Number(), если вы готовы мириться с граничными случаями при конвертации, например,
Странно, что в статье про parseInt() ничего нет. Видимо, подразумевается, что мы работаем в основном с десятичной системой счисления.
#js #quirks
http://thecodebarbarian.com/convert-a-string-to-a-number-in-javascript.html
Автор предлагает использовать Number(), если вы готовы мириться с граничными случаями при конвертации, например,
Number(''); // 0, и parseFloat(), если вам нужна большая строгость parseFloat(''); // NaN. Для проверки, является ли число NaN, советует использовать метод Number.isNaN(), который был добавлен в ES2015. Призывает отказаться от использования глобального isNaN(), так как isNaN('string') === true, а Number.isNaN('string') === false, то есть в последнем варианте аргумент не приводится к числу и таким образом этот метод "честнее" для разработчика.Странно, что в статье про parseInt() ничего нет. Видимо, подразумевается, что мы работаем в основном с десятичной системой счисления.
#js #quirks
http://thecodebarbarian.com/convert-a-string-to-a-number-in-javascript.html
The Code Barbarian
Convert a String to a Number in JavaScript
Converting a string to a number in JavaScript is [surprisingly subtle](https://gomakethings.com/converting-strings-to-numbers-with-vanilla-javascript/). With `NaN`, [implicit radixes](https://www.w3schools.com/jsref/jsref_parseint.asp), and numbers vs [N…
Посмотрел выпуск видео-подкаста HTTP 203, в котором Джек Арчибальд и Сурма Дас рассказывают про особенности цикла for в JavaScript "JavaScript for-loops are… complicated".
Обычные циклы for (с var в инициализаторе) работают следующим образом: инициализируется счётчик, проверяется условие выхода, выполняется тело цикла, производится инкремент счётчика, проверяется условие, выполняется тело цикла и т.д. Если в инициализаторе используется let, то логика работы цикла немного меняется. Это объясняется тем, что переменная счётчика должна копироваться в создаваемую лексическую область тела цикла. Такое поведение закреплено в стандарте языка. C let, код ниже выведет цифры 0, 1, в отличие от цикла с var, который бы вывел цифры 2, 2.
В итоге инкремент счётчика в случае с let происходит перед выполнением тела цикла, но не для первой (!) итерации. Эту особенность можно использовать для каких-нибудь странных вещей, но Джек и Сурма не рекомендуют так делать. Они подытожили подкаст советом использовать итераторы и инструкцию for...of вместо обычного цикла for, когда это имеет смысл. И я тоже считаю, что это хороший подход.
#js #quirks
https://www.youtube.com/watch?v=Nzokr6Boeaw
Обычные циклы for (с var в инициализаторе) работают следующим образом: инициализируется счётчик, проверяется условие выхода, выполняется тело цикла, производится инкремент счётчика, проверяется условие, выполняется тело цикла и т.д. Если в инициализаторе используется let, то логика работы цикла немного меняется. Это объясняется тем, что переменная счётчика должна копироваться в создаваемую лексическую область тела цикла. Такое поведение закреплено в стандарте языка. C let, код ниже выведет цифры 0, 1, в отличие от цикла с var, который бы вывел цифры 2, 2.
for (let i = 0; i < 2; i++) {
setTimeout(() => console.log(i));
}В итоге инкремент счётчика в случае с let происходит перед выполнением тела цикла, но не для первой (!) итерации. Эту особенность можно использовать для каких-нибудь странных вещей, но Джек и Сурма не рекомендуют так делать. Они подытожили подкаст советом использовать итераторы и инструкцию for...of вместо обычного цикла for, когда это имеет смысл. И я тоже считаю, что это хороший подход.
#js #quirks
https://www.youtube.com/watch?v=Nzokr6Boeaw
YouTube
JavaScript for-loops are… complicated - HTTP203
In this episode, Jake and Surma dissect how for-loops actually work and how they’ve evolved. Turns out, it got complicated.
Subscribe to the channel! → http://bit.ly/ChromeDevs1
Watch more HTTP203 → http://bit.ly/2sPq2LB
Listen to the HTTP203 podcast for…
Subscribe to the channel! → http://bit.ly/ChromeDevs1
Watch more HTTP203 → http://bit.ly/2sPq2LB
Listen to the HTTP203 podcast for…
Пару недель назад я публиковал пост про видео, в котором описываются тонкости работы цикла for. Пётр Мязин — ведущий подкаста Пятиминутка React — вдохновился этим видео и сделал свою версию на русском языке. Видосик получился интересным, код в нём разбирается гораздо подробнее чем в оригинале. Очень рекомендую посмотреть, если англоязычный материал показался сложным для понимания.
#js #quirks
https://www.youtube.com/watch?v=gAPh2W8qcUY
#js #quirks
https://www.youtube.com/watch?v=gAPh2W8qcUY