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

Операторы сравнения используются в логических выражениях. Перечислим их:

  • == — равно;
  • === — строго равно;
  • != — не равно;
  • !== — строго не равно;
  • < — меньше;
  • > — больше;
  • <= — меньше или равно;
  • >= — больше или равно.

Логические выражения возвращают только два значения true (истина) или false (ложь). Пример вывода значения логического выражения:

console.log( 10 == 10 );   // true
console.log( 10 == 5  );   // false
console.log( 10 != 5  );   // true
console.log( 10 <  5  );   // false
console.log( 10 >  5  );   // true
console.log( 10 <= 5  );   // false
console.log( 10 >= 5  );   // true

В чем отличие оператора == (равно) от оператора === (строго равно)? Дело все в том, что если используется оператор ==, интерпретатор пытается преобразовать разные типы данных к одному и лишь затем сравнивает их. Оператор ===, встретив данные разных типов, сразу возвращает false (ложь):

console.log( 5 == '5'  );  // true
console.log( 5 === '5' );  // false

Кроме того, значение логического выражения можно инвертировать с помощью оператора ! таким образом:

console.log( 10 == 10 );    // true
console.log( !(10 == 10) ); // false

Если значения равны, то возвращается значение true, но т. к. перед выражением стоит оператор !, выражение вернет false.

Если оператор ! указать дважды, то любое значение преобразуется в логическое:

console.log( !!10 );        // true

Следует учитывать, что оператор проверки на равенство содержит два символа =. Указание одного символа = является логической ошибкой, так как этот оператор используется для присваивания значение переменной, а не для проверки условия. Использовать оператор присваивания внутри логического выражения допускается, поэтому интерпретатор не выведет сообщение об ошибке, однако программа может выполняться некорректно. Подобную ошибку часто допускают начинающие программисты. Например, в следующем примере вместо проверки равенства числу 11, производится операция присваивания:

let x = 10;
if (x = 11) {
   console.log('x == 11');
}

Выражение внутри круглых скобок присвоит переменной x значение 11, а затем будет произведено сравнение. Любое число не равное 0 трактуется как логическое значение true, поэтому в окне консоли отобразится строка x == 11.

Выполнить сравнение двух значений позволяет также статический метод is(<Значение 1>, <Значение 2>) из класса Object. Метод возвращает значение true в следующих случаях:

console.log( Object.is(undefined, undefined) ); // true
console.log( Object.is(null, null) );           // true
console.log( Object.is(true, true) );           // true
console.log( Object.is(false, false) );         // true
console.log( Object.is('abc', 'abc') );         // true
let obj1 = { a: 10 }, obj2 = obj1;
console.log( Object.is(obj1, obj2) );           // true
console.log( Object.is(+0, +0) );               // true
console.log( Object.is(-0, -0) );               // true
console.log( Object.is(NaN, NaN) );             // true
console.log( Object.is(1, 1) );                 // true

Метод is() не выполняет приведение разных типов, поэтому его действие отличается от оператора ==. Имеются также отличия от оператора ===:

console.log( NaN === NaN );                     // false
console.log( Object.is(NaN, NaN) );             // true
console.log( +0 === -0 );                       // true
console.log( Object.is(+0, -0) );               // false

Несколько логических выражений можно объединить в одно большое с помощью следующих операторов:

  • && — логическое И. Логическое выражение вернет true только в случае, если оба подвыражения вернут true. Пример:
console.log( (10 == 10) && (5 != 3) ); // true
console.log( (10 == 10) && (5 == 3) ); // false
  • || — логическое ИЛИ. Логическое выражение вернет true, если хотя бы одно из подвыражений вернет true. Если первое подвыражение вернет значение true, то второе подвыражение даже не будет вычисляться. Пример:
console.log( (10 == 10) || (5 != 3) ); // true
console.log( (10 == 10) || (5 == 3) ); // true

Оператор || также часто используется для создания необязательных параметров в функции. Если первое выражение не может быть преобразовано в true, то возвращается значение второго выражения:

function test(str) {
   str = str || 'Значение по умолчанию';
   return str;
}
console.log( test() );                   // Значение по умолчанию
console.log( test('Значение указано') ); // Значение указано

Учебник по Node.js и JavaScript
Учебник по JavaScript (Node.js) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов