Page 115 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 115
О
выполняться бесконечно. Это связано с тем, что . 1 - это число, которое не может
быть точно представлено в виде значения двойной точности, поскольку оно нахо
дится между двумя представлениями двоичной дроби. Поэтому на третьей итера
ции этого цикла n будет иметь значение . 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 , проверка даст fal e
О
s
и единственный шанс прервать цикл будет упущен.
Этот цикл можно переписать так, чтобы использовать число Number . E P S I LON
и оператор сравнения, чтобы осуществить "более мягкое" сравнение и успешно оста
новить цикл.
let n = О ;
while ( t rue )
n += 0 . 1 ;
i f (Math . a bs ( n - 0 . 3 ) < NumЬer . EPSILON ) break;
g
console . l o ( ' Stopped at $ { n ) ' ) ;
Обратите внимание, что мы вычитаем целевое число (О . 3) из проверяемого чис
ла (n) и получаем его абсолютное значение (используя функцию Math . a bs, рассмо
тренную в главе 6 ), которое затем и сравниваем с пороговым значением. В данном
1
случае мы могли бы просто проверить, не больше ли n значения О . 3. Однако мы
выполнили несложные вычисления, чтобы продемонстрировать вам способ опреде
ления, достаточно ли два числа двойной точности близки, чтобы их можно считать
равными.
Конкатенация строк
В JavaScript оператор + используется и для сложения чисел, и для конкатенации
строк (что весьма распространено; наиболее известными примерами языков, не ис
пользующих оператор + для конкатенации строк, являются Perl и РНР).
Что именно имеется в виду, сложение чисел или конкатенации строк, JavaScript
определяет по типами операндов. И сложение, и конкатенация обрабатываются слева
направо. JavaScript исследует каждую пару операндов слева направо, и если любой
из операндов является строкой, то осуществляется конкатенация строк. Если оба
значения являются числовыми, то происходит сложение. Рассмотрим следующие две
строки кода.
3 + 5 +
/ / результат - строка "8811
11 8 11
"З" + 5 + 8 11 результат - строка "358 "
В первом случае JavaScript сначала вычисляет сумму ( 3 + 5 ) , а затем осущест
"
вляет конкатенацию строк ( 8 + " 8 " ) . Во втором случае ( 3 " + 5 ) вычисляется как
конкатенация, затем ( " 3 5 " + 8 ) - тоже как конкатенация.
1 1 4 Глава 5. Выражения и операторы

