Глава 1. Настройка среды разработки
Возможно, вам приходилось слышать, что «разработчика делают инструменты разработки». Это, конечно же, преувеличение, но никто не захочет остаться один на один с кодом JavaScript без любимых инструментов для редактирования, анализа и отладки.
При настройке среды разработки первое, чем вы озаботитесь, — это редактор кода. Даже в самом простом редакторе есть такие базовые вещи, как автодополнение и подсветка синтаксиса — две простые функции, предотвращающие кучу потенциальных ошибок. В современных редакторах кода функций гораздо больше. В частности, это интеграция с системами управления версиями, такими как GitHub, построчная отладка и интеллектуальный рефакторинг. Некоторые из этих функций подключаются к редактору в виде плагинов. Иногда функции запускаются из терминала или являются частью процесса сборки. Но как бы вы ни использовали свой инструментарий, подобрать удачное сочетание инструментов, соответствующее вашему стилю программирования, среде разработки и типам проектов, — обязательная часть общего удовольствия. Это примерно такая же обязательная процедура, как приобретение инструментов для профессионала, занимающегося ремонтом квартир, или инвестиции в правильное кухонное оборудование для амбициозного шеф-повара.
Инструменты не выбирают раз и навсегда. Ваши предпочтения как разработчика могут меняться. По мере профессионального роста, а также при появлении новых полезных инструментов ваш инструментарий будет расширяться. В этой главе описан минимальный комплект, которым необходимо обзавестись любому разработчику JavaScript, прежде чем браться за проект. Однако у вас остается широчайший выбор между различными, но в целом эквивалентными вариантами. И как отмечают многие мудрые люди, о вкусах не спорят!
Глава 1. Настройка среды разработки
Возможно, вам приходилось слышать, что «разработчика делают инструменты разработки». Это, конечно же, преувеличение, но никто не захочет остаться один на один с кодом JavaScript без любимых инструментов для редактирования, анализа и отладки.
При настройке среды разработки первое, чем вы озаботитесь, — это редактор кода. Даже в самом простом редакторе есть такие базовые вещи, как автодополнение и подсветка синтаксиса — две простые функции, предотвращающие кучу потенциальных ошибок. В современных редакторах кода функций гораздо больше. В частности, это интеграция с системами управления версиями, такими как GitHub, построчная отладка и интеллектуальный рефакторинг. Некоторые из этих функций подключаются к редактору в виде плагинов. Иногда функции запускаются из терминала или являются частью процесса сборки. Но как бы вы ни использовали свой инструментарий, подобрать удачное сочетание инструментов, соответствующее вашему стилю программирования, среде разработки и типам проектов, — обязательная часть общего удовольствия. Это примерно такая же обязательная процедура, как приобретение инструментов для профессионала, занимающегося ремонтом квартир, или инвестиции в правильное кухонное оборудование для амбициозного шеф-повара.
Инструменты не выбирают раз и навсегда. Ваши предпочтения как разработчика могут меняться. По мере профессионального роста, а также при появлении новых полезных инструментов ваш инструментарий будет расширяться. В этой главе описан минимальный комплект, которым необходимо обзавестись любому разработчику JavaScript, прежде чем браться за проект. Однако у вас остается широчайший выбор между различными, но в целом эквивалентными вариантами. И как отмечают многие мудрые люди, о вкусах не спорят!
1.3. Выполнение фрагментов кода в консоли разработчика
предотвращающие кучу потенциальных ошибок. В современных редакторах кода
if (unknownVariable) {
/* Мы попадем сюда, если:
unknownVariable объявлена
unknownVariable не равна null
unknownVariable не является пустой строкой ('')
*/
}
Для того чтобы преобразовать градусы в радианы, нужно умножить значение в градусах на (Math.PI/180):
const radians = degrees * (Math.PI / 180);
Таким образом, для угла 90° получаем следующее вычисление:
const radians = 90 * (Math.PI / 180);
console.log(radians); // 1.5707963267948966
Для того чтобы преобразовать радианы в градусы, нужно умножить значение в радианах на (180/Math.PI):
const degrees = radians * (180 / Math.PI);
Есть десятичное число, нужно вычислить его шестнадцатеричный эквивалент.
Решение
Использовать метод Number.toString() с аргументом, определяющим основание системы счисления, в которую выполняется преобразование:
const num = 255;
// выведет ff — шестнадцатеричный эквивалент 255
console.log(num.toString(16));
Метод isFinite() практически не отличается от isNaN(), за исключением того что обрабатывает странные граничные случаи, такие как 1/0, в которых возвращает значение infinity. Если применить метод isNaN() для infinity, то он вернет false, что выглядит несколько неоднозначно.
Если приходится выполнять много финансовых вычислений, то можно упростить себе жизнь, воспользовавшись сторонней библиотекой, такой как bignumber.js (https://github.com/MikeMcl/bignumber.js). В ней есть специализированный числовой тип данных, который во многом подобен обычному Number, но обеспечивает дополнительную точность для чисел с определенным количеством знаков после точки.
Ошибки округления чисел с плавающей точкой — хорошо известное явление, которое существует практически в любом языке программирования. Для того чтобы понаблюдать его в JavaScript, выполните следующий код:
const sum = 0.1 + 0.2;
console.log(sum); // выведет 0.30000000000000004
Мы не можем избежать ошибки округления, но можем свести ее к минимуму. При работе с денежными суммами в определенной валюте (например, в долларах) можно умножать все значения на 100, чтобы не иметь дела с дробными величинами. Вместо того чтобы писать такой код:
const currentBalance = 5382.23;
const transactionAmount = 14.02;
const updatedBalance = currentBalance — transactionAmount;
// Теперь updatedBalance = 5368.209999999999
лучше использовать следующие переменные для денежных сумм:
const currentBalanceInCents = 538223;
const transactionAmountInCents = 1402;
const updatedBalanceInCents = currentBalanceInCents - transactionAmountInCents;
// Теперь updatedBalanceInCents = 536821
Этот прием решит проблему для тех операций, которые работают с целыми числами без потери точности, такими как сложение и вычитание количества центов. Но что будет, если понадобится вычислить налог или доход в процентах? Результатом этих операций в любом случае будут дробные значения. Придется делать то же самое, что делают в таких случаях предприятия и банки, — округлять значения сразу после транзакции:
const costInCents = 4899;
// Вычислить налог в 11 % и округлить результат
// до ближайшего целого числа центов
const costWithTax = Math.round(costInCents*1.11);