Справочник javascript: Операторы сравнения

Форум

Учебник Node.JS скринкаст Стандарт языка

Справочник

Discord чат

 
Статьи Тест знаний Аналоги функций PHP  

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

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

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

?


Автор: При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 ??


Автор: 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");

Автор: Гость (не зарегистрирован), дата: 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 не найдено.


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

#permalink

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

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


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

#permalink

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


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

#permalink

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


Автор: 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>

Автор: 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?


 
Поиск по сайту
Содержание

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

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