Javascript.RU

Операторы сравнения

Описание, примеры

Операндами операторов сравнения могут быть численные и строковые значения. Строки сравниваются, исходя из стандартного лексикографического порядка при использовании 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. Если преобразовать объект не удается - генерируется ошибка выполнения.

См. также


Автор: Гость (не зарегистрирован), дата: 28 сентября, 2010 - 16:13
#permalink

Почему

null == 0 // false

?


Автор: Илья Кантор, дата: 2 октября, 2010 - 11:05
#permalink

Так прописано в стандарте, жесткий хардкод.. Видимо, имели в виду что Null это отсутствие объекта.., 0 - число.


Автор: solomon243 (не зарегистрирован), дата: 15 ноября, 2010 - 23:24
#permalink

И не только в JavaScript


Автор: Гость (не зарегистрирован), дата: 28 февраля, 2016 - 10:54
#permalink

IMHO null - объект, который не может быть приведён к простому типу, т.к. не имеет valueOf() или toString()


Автор: При3 (не зарегистрирован), дата: 3 ноября, 2010 - 20:14
#permalink
if (0=>h1>=5000) {document.write("<center><b>Вы убили слепого пса</b><br><img src=http://stalker-epos.com/zp/mutants/epos-zp-slepoy_dog.jpg></center>")}
if (5000=>h1>=9900) {document.write("<center><b>Вы убили псевдособаку</b><br><img src=http://stalker-epos.com/zp/mutants/epos-zp-pseudodog.jpg></center>")}

Где ошибка? Почему не работает?! Так вообще можно ставить y=>h1>=x ??


Автор: denya (не зарегистрирован), дата: 24 декабря, 2010 - 02:52
#permalink

Нет, нельзя. Правильно так:

if (0 <= h1 && h1 <= 5000){}

Автор: Гость (не зарегистрирован), дата: 2 июля, 2015 - 11:59
#permalink

if (0=>h1>=5000) - будет ошибка, потому что нельзя путать местами '=' и '>'
Сначала знак неравенства, затем равно, и ни в коем случае не наоборот.


Автор: Erika (не зарегистрирован), дата: 12 февраля, 2012 - 03:13
#permalink

Увидела вопрос почему null==0 false
В пример php код

<?php
$image=null;
if(file_exists($dir.'/'.$image) && preg_match('#\.png$|\.jpg$|\.jpeg$|\.gif$#i',basename($image)))//Проверяем наличие изображения переданого переменной в указаной папке. При этом формат изображения (preg_match(); должен соотведствовать шаблону. Регистр (#i) не имеет значения)
$image="<img src=\"".$dir."/".$image."\" />";
echo $image;//Если изображение имеется на сервере - оно будет показано. Нет - строчка останется пустой
?>

Если бы в начале кода было указано
$image=0;
То вывело бы нолик, а так все как доХтор прописал
Могу для примера и на жабе чет настропать но, оно аналогично...


Автор: Erika (не зарегистрирован), дата: 12 февраля, 2012 - 03:21
#permalink

Можно ещё и так

$image=false;
//Проверяем изображение (Выше писала уж0)
if($image!=false)
echo $image;
else
print_r("Украли картинку уж0\r\n");
//Или так
//Код проверки
if(isset($image))
echo $image;
elseif(!isset($image))
print_r( "Нет такого изображения\r\n");

Автор: iyntx, дата: 30 марта, 2012 - 13:38
#permalink

null в PHP и JS:

В PHP

<?
var_dump((null == true)); // bool(false)
var_dump((null == false)); //вернёт bool(true)
?>

в JS

<script>
null == false  //вернёт false
null == true  //вернёт false
</script>

-------
в js для проверки на null , думаю, лучше всего юзать отрицание "!"

<script>
!null //вернёт true

!'я строка'  //вернёт false
!['я','массив'] //вернёт false
!{я:'объект'} //вернёт false
</script>

Автор: Гость (не зарегистрирован), дата: 2 июля, 2015 - 12:09
#permalink

Проверить на null используя отрицание???

!null //вернёт true
!NaN //вернёт true
!undefined //вернёт true
!false //вернёт true
!0 //вернёт true

а null с null проверить слабо?

null===null //вернёт true

Автор: Гость (не зарегистрирован), дата: 31 марта, 2012 - 01:32
#permalink

Вопрос про условия:

if(A>=100) {var B = 10;};
if(A<100) {var B = 5};

if(C>=50) {var D = 20;};
if(C<50) {var D = 50};

var E = B+D;

Значения A и C вводятся в поле вручную. Как сложить B и D? Почему этот код не работает? Пишет условие B не найдено.


Автор: Гость (не зарегистрирован), дата: 20 апреля, 2012 - 06:56
#permalink

Проблема в области видимости переменной B, она видна только в теле оператора IF

var A,B,C,D,E;
A=100;
C=40
if(A>=100) {
B = 10;
}else{
B = 5;
} 
if(C>=50) {
D = 20;
}else{
D = 50;
}
 
E = B+D;

Автор: Гость (не зарегистрирован), дата: 9 марта, 2016 - 17:26
#permalink

> Проблема в области видимости переменной B,
> она видна только в теле оператора IF
... ничего подобного, в JS области видимости подразделяются на "глобальную" и "область видимости функции". Фигурные скобки не образуют отдельную область видимости.
Проблема кода в том, что строчки

1. if(A>=100) {var B = 10;};
2. if(A<100) {var B = 5};

не выполняются т.к. в них не определена переменная А
перепишите код следующим образом:

var A = 20;
if(A >= 100) {var B = 10; };
if(A < 100)  {var B = 5; };

и он выполнится, тестил в таком варианте, работает:

<script type="text/javascript">
<!--
var A = 20;
if(A >= 100) {var B = 10; };
if(A < 100)  {var B = 5; };
document.writeln(B + " <br />");
-->
</script>

Автор: макxxxx (не зарегистрирован), дата: 7 января, 2013 - 22:22
#permalink

"Для строгого сравнения оба операнда должны иметь одинаковый тип и:"

Буква "и" не лишняя?


Автор: макxxxx (не зарегистрирован), дата: 7 января, 2013 - 22:50
#permalink

"Стандартные операторы равенства (== и !=) сравнивают два операнда безотносительно их типа."
Может быть уместнее употребить операторы сравнения?


Автор: ВиталийАТ (не зарегистрирован), дата: 3 декабря, 2013 - 07:51
#permalink

Как сравнить адрес строки URL?


Автор: Dmitry_kh, дата: 9 апреля, 2015 - 16:15
#permalink
null == 0 //false
null > 0  //false
null >= 0 //true

Что это, мать их, за извращенство?!!!


Автор: Гость (не зарегистрирован), дата: 2 июня, 2015 - 16:10
#permalink

Это волшебный мир JavaScripta! Улыбайтесь! ))


Автор: Гость (не зарегистрирован), дата: 28 февраля, 2016 - 11:19
#permalink

null - объект, который не может быть приведён к простому типу, т.к. не имеет valueOf() или toString(), по-этому любое сравнение числовых даёт false
отсюда:
null > 0 // => false
null < 0 // => false
Операторы <= (меньше или равно) и >= (больше или равно) для определения «равенства» двух значений не используют операторы равенства или идентичности. Оператор «меньше или равно» определяется просто как «не больше », а оператор «больше или равно» – как «не меньше».
(x >= y) -> !(x < y), а (x <= y) -> !(x > y) т.к. логика операторов ">" и "<" отличается от "==" или "==="


Автор: WearponiX (не зарегистрирован), дата: 12 августа, 2015 - 13:09
#permalink

Где ошибка? Ввожу 2 и 123456 а код пишет что 2 больше.

<script language="JavaScript">
window.onclick = min;
var a=""; b="";
function min(a,b){
alert("Enter two numbers.");
a = prompt('Number one:', 0);
b = prompt('Number two:', 0);
if (b<a){
alert("Number "+a+" is bigger.");
}
else if (b>a){
alert("Number "+b+" is bigger.");
}
else if (a==b){
alert("Numbers "+a+" and "+b+" are similar.");
};
}</script>

Автор: Гость (не зарегистрирован), дата: 12 августа, 2015 - 19:04
#permalink

У тебя сравниваются не числа, а строки. попробуй поменять вот так
a = parseInt(prompt('Number one:', 0),10);
b = parseInt(prompt('Number two:', 0),10);


Автор: jonnyVy (не зарегистрирован), дата: 5 октября, 2015 - 09:51
#permalink

Почему этот код

var a = 2>1>0;
console.log(a);

выводит true, а вот этот

var a = 3>2>1>0;
console.log(a);

выводит false?


Автор: may42, дата: 10 октября, 2015 - 23:47
#permalink

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


Автор: комментарий (не зарегистрирован), дата: 10 февраля, 2020 - 13:17
#permalink

То вывело бы нолик, а так все как доХтор прописал
Могу для примера и на жабе чет настропать но, оно аналогично...
super smash flash 2


Автор: Tom Hiddleston (не зарегистрирован), дата: 20 апреля, 2020 - 11:37
#permalink

Thank you for sharing this information. Love the article on your page. Please keep updating, it is very helpful. mapquest directions


Автор: chainsaw dance (не зарегистрирован), дата: 19 октября, 2021 - 04:31
#permalink

Each play is a challenge and you will feel the victor's taste. Join the fun game completely free and without ads chainsaw dance


Автор: Гость (не зарегистрирован), дата: 12 апреля, 2022 - 14:58
#permalink

Автор: Гость (не зарегистрирован), дата: 15 апреля, 2022 - 23:42
#permalink

Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 13:48
#permalink

Автор: sara167 (не зарегистрирован), дата: 18 мая, 2022 - 12:28
#permalink

Thank you for providing this information. I am delighted to come on this fantastic article.
build now gg


Автор: mikassa (не зарегистрирован), дата: 13 июля, 2022 - 12:44
#permalink

This is an excellent piece of writing. I'd like to know how amazing the information in your article is retro games. It has a lot of appeal and persuasion. On this topic, your viewpoint is identical to mine.


Автор: sofia167 (не зарегистрирован), дата: 23 августа, 2022 - 13:16
#permalink

Many thanks for the insightful information you provided. It has been difficult for me to come up with numerous queries pertaining to this matter. I will follow you!
cookie clicker unblocked


Автор: Гость (не зарегистрирован), дата: 30 сентября, 2022 - 07:02
#permalink

Basketball stars is an addictive basketball game, especially for those of you who love sports. If you have a passion for basketball, you will be competing with famous basketball legends. Or you can play alone with friends to create beautiful pitches.


Автор: michaelkirk (не зарегистрирован), дата: 22 ноября, 2023 - 09:47
#permalink

Comparison Operators are useful for geometry dash subzero becaue it can compare this game with others in the gaming world correctly. I like this feature.


Автор: Гость (не зарегистрирован), дата: 15 апреля, 2024 - 07:22
#permalink

After comparing, remember to go to the grade calculator to calculate your score online


Автор: Гость (не зарегистрирован), дата: 11 июня, 2024 - 11:36
#permalink

Comparison operators are widely used in practice. And we see it most clearly with capybara clicker


Автор: vrfewg (не зарегистрирован), дата: 17 июля, 2024 - 12:40
#permalink

I am profoundly grateful for the generosity and support you have extended to me. I am genuinely grateful for the spiritual support you offer.
capybara clicker game


Автор: Awertyy (не зарегистрирован), дата: 2 октября, 2024 - 05:17
#permalink

A Guest post provides an effective method to boost your website’s credibility and improve its search engine rankings. By sharing well-researched content on reputable platforms like Guest post, you gain access to a broader audience while also benefiting from the SEO value of quality backlinks (Eg. viapai.com). This approach not only drives more traffic to your site but also helps establish your expertise in your niche, making it a valuable tool for long-term brand growth and recognition.


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
5 + 8 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum