Операторы сравнения
Описание, примеры
Операндами операторов сравнения могут быть численные и строковые значения. Строки сравниваются, исходя из стандартного лексикографического порядка при использовании Unicode.
Яваскрипт допускает как строгое сравнение, так и сравнение с приведением типов. Для строгого сравнения оба операнда должны иметь одинаковый тип и:
- Две строки строго равны, если состоят из одинаковой последовательности символов
- Два числа строго равны, если равны в обычном смысле слова.
+0 строго равен -0 .
NaN строго не равно ничему, включая NaN
- Два булевых операнда строго равны, если они оба
true или false
- Два операнда-объекта строго равны, если являются ссылками на один и тот же общий объект
Null и Undefined равны == , но не строго равны ===
Следующая таблица описывает операторы сравнения:
Оператор |
Описание |
Примеры, возвращающие true при var1=3, var2=4 |
Равно (== ) |
Если два операнда не одного типа, javascript преобразовывает типы и сравнивает строго. Если какой-либо операнд - число или булево значение, то операнды преобразуются в числа; если какой-либо операнд строка - второй преобразуются в строку |
3 == var1 "3" == var1 3 == '3'
|
Не равно (!= ) |
Возвращает true , если операнды не равны. Если операнды имеют разный тип, javascript преобразовывает. |
var1 != 4 var1 != "5"
|
Строго равно (=== ) |
Возвращает true , если операнды строго равны (см. выше), без преобразования типов. |
3 === var1
|
Строго не равно (!== ) |
Возвращает true , если операнды не являются строго равными (см. выше) или имеют разные типы. |
var2 !== 3 3 !== '3'
|
Больше (> ) |
Возвращает true , если левый операнд больше правого. |
var2 > var1
|
Больше или равно (>= ) |
Возвращает true , если левый операнд больше правого или равен ему. |
var2 >= var1 var1 >= 3
|
Меньше (< ) |
Возвращает true , если левый операнд меньше правого. |
var1 < var2
|
Меньше или равно (<= ) |
Возвращает true , если левый операнд меньше правого или равен ему. |
var1 <= var2 var2 <= 5
|
Использование операторов сравнения
Стандартные операторы равенства (== и !=) сравнивают два операнда безотносительно их типа. Строгое равенство (=== и !==) производит сравнения операндов одинакового типа. Используйте строгое равенство, если операнды должны иметь одинаковый тип и значение. В ином случае, используйте обычные операторы равенства, которые позволяют проверить равенство операндов, даже если они разного типа.
При конвертации типов яваскрипт преобразует String, Number, Boolean и Object следующим образом:
- При сравнении числа и строки, строка преобразуется в числовое значение. Яваскрипт при этом получает значение числа из строкового литерала:
"123" == 123 .
- Если один из операндов - булевый, то он преобразуется к 1, если он
true и к +0, если он false
- Если объект сравнивается с числом или строкой, яваскрипт пытается получить соответствующее значение для объекта. Он преобразует объект к элементарному значению, строке или числу, используя методы
valueOf и toString . Если преобразовать объект не удается - генерируется ошибка выполнения.
|
Почему
?
Так прописано в стандарте, жесткий хардкод.. Видимо, имели в виду что Null это отсутствие объекта.., 0 - число.
И не только в JavaScript
IMHO null - объект, который не может быть приведён к простому типу, т.к. не имеет valueOf() или toString()
Где ошибка? Почему не работает?! Так вообще можно ставить y=>h1>=x ??
Нет, нельзя. Правильно так:
if (0=>h1>=5000) - будет ошибка, потому что нельзя путать местами '=' и '>'
Сначала знак неравенства, затем равно, и ни в коем случае не наоборот.
Увидела вопрос почему null==0 false
В пример php код
Если бы в начале кода было указано
$image=0;
То вывело бы нолик, а так все как доХтор прописал
Могу для примера и на жабе чет настропать но, оно аналогично...
Можно ещё и так
null в PHP и JS:
В PHP
в JS
-------
в js для проверки на null , думаю, лучше всего юзать отрицание "!"
Проверить на null используя отрицание???
а null с null проверить слабо?
Вопрос про условия:
Значения A и C вводятся в поле вручную. Как сложить B и D? Почему этот код не работает? Пишет условие B не найдено.
Проблема в области видимости переменной B, она видна только в теле оператора IF
> Проблема в области видимости переменной B,
> она видна только в теле оператора IF
... ничего подобного, в JS области видимости подразделяются на "глобальную" и "область видимости функции". Фигурные скобки не образуют отдельную область видимости.
Проблема кода в том, что строчки
не выполняются т.к. в них не определена переменная А
перепишите код следующим образом:
и он выполнится, тестил в таком варианте, работает:
"Для строгого сравнения оба операнда должны иметь одинаковый тип и:"
Буква "и" не лишняя?
"Стандартные операторы равенства (== и !=) сравнивают два операнда безотносительно их типа."
Может быть уместнее употребить операторы сравнения?
Как сравнить адрес строки URL?
Где ошибка? Ввожу 2 и 123456 а код пишет что 2 больше.
У тебя сравниваются не числа, а строки. попробуй поменять вот так
a = parseInt(prompt('Number one:', 0),10);
b = parseInt(prompt('Number two:', 0),10);
Почему этот код
выводит true, а вот этот
выводит false?
js видит "3>2>1" как последовательность:
"значение оператор значение оператор значение"
У всех трёх операторов ">" приоритет исполнения 11, значит, они будут исполняться друг за другом слева-направо.
Ход исполнения для первого фрагмента по шагам:
первый (левый) оператор: 2>1; //получаем true
второй (правый) оператор: true>0; //преобразуем к 1>0 получаем true
ответ true
Ход исполнения для второго фрагмента по шагам:
первый оператор: 3>2; //получаем true
второй оператор: true>1; //преобразуем к 1>1 получаем false
третий оператор: false>0; //преобразуем к 0>0 получаем false
ответ false