Операторы сравнения. Из всех типов операторов отношения чаще всего используются операторы сравнения – для определения относительного порядка двух величин.
Из всех типов операторов отношения чаще всего используются операторы сравнения – для определения относительного порядка двух величин.
Меньше (<).Результат оператора < равен true, если первый операнд меньше, чем второй операнд; в противном случае он равен false.
Больше (>).Результат оператора > равен true, если его первый операнд больше, чем второй операнд; в противном случае он равен false.
Меньше или равно (<=).Результатом оператора <= является true, если первый операнд меньше или равен второму операнду; в противном случае результат равен false.
Больше или равно (>=).Результат оператора >= равен true, если его первый операнд больше второго или равен ему; в противном случае он равен false.
Эти операторы позволяют сравнивать операнды любого типа. Однако сравнение может выполняться только для чисел и строк, поэтому операнды, не являющиеся числами или строками, преобразуются. Сравнение и преобразование выполняется следующим образом:
• Если оба операнда являются числами или преобразуются в числа, они сравниваются как числа.
• Если оба операнда являются строками или преобразуются в строки, они сравниваются как строки.
• Если один операнд является строкой или преобразуется в строку, а другой является числом или преобразуется в число, оператор пытается преобразовать строку в число и выполнить численное сравнение. Если строка не представляет собой число, она преобразуется в значение NaN и результатом сравнения становится false.
• Если объект может быть преобразован как в число, так и в строку, интерпретатор JavaScript выполняет преобразование в число. Это значит, например, что объекты Date сравниваются как числа, т. е. можно сравнить две даты и определить, какая из них более ранняя.
• Если оба операнда не могут быть успешно преобразованы в числа или строки, операторы всегда возвращают false.
• Если один из операндов равен или преобразуется в NaN, то результатом оператора сравнения является false.
Имейте в виду, что сравнение строк выполняется строго посимвольно, для числовых значений каждого символа из кодировки Unicode. В некоторых случаях стандарт Unicode допускает кодирование эквивалентных строк с применением различных последовательностей символов, но операторы сравнения в JavaScript не обнаруживают этих различий в кодировках; предполагается, что все строки представлены в нормализованной форме. Обратите внимание: сравнение строк производится с учетом регистра символов, т. е. в кодировке Unicode (по крайней мере, для подмножества ASCII) все прописные буквы «меньше» всех строчных букв. Это правило может приводить к непонятным результатам. Например, согласно оператору < строка "Zoo" меньше строки "aardvark".
При сравнении строк более устойчив метод String.localeCompare(), который также учитывает национальные определения «алфавитного порядка». Для сравнения без учета регистра необходимо сначала преобразовать строки в нижний или верхний регистр с помощью метода String.toLowerCase() или String.toUpperCase().
Операторы <= (меньше или равно) и >= (больше или равно) определяют «равенство» двух значений не при помощи операторов равенства или идентичности. Оператор «меньше или равно» определяется просто как «не больше», а оператор «больше или равно» – как «не меньше». Единственное исключение имеет место, когда один из операндов представляет собой значение NaN (или преобразуется в него); в этом случае все четыре оператора сравнения возвращают false.
Дата добавления: 2015-08-01; просмотров: 587;