JavaScript 7 — Операторы равенства (== против ===)

Apr 01 2023
Различия между операторами равенства Ключевые различия между операторами равенства == и === в JavaScript заключаются в следующем: Сравнение значений. Чтобы сравнить два значения на равенство, вы можете использовать либо оператор ==, либо ===, в зависимости от того, вы хотите выполнить принуждение типа или нет. Во второй строке null === undefined возвращает false, поскольку оператор === выполняет строгое сравнение, а это означает, что операнды не преобразуются в общий тип перед их сравнением.

Различия между операторами равенства

Ключевые различия между операторами равенства ==и ===в JavaScript заключаются в следующем:

  • ==выполняет приведение типа , что означает, что он попытается преобразовать операнды в общий тип перед сравнением, тогда как ===не выполняет приведение типа .
  • ==проверяет равенство значений с приведением, тогда как ===проверяет равенство значений и типов.

Сравнение значений . Чтобы сравнить два значения на равенство, вы можете использовать оператор ==или ===, в зависимости от того, хотите ли вы выполнить приведение типов или нет.

const num1 = 10;
const num2 = '10';
console.log(num1 == num2); // Output: true (value equality with coercion)
console.log(num1 === num2); // Output: false (type inequality)

const day = 'Monday';
switch(day) {
  case 'Monday':
    console.log('Today is Monday');
    break;
  case 'Tuesday':
    console.log('Today is Tuesday');
    break;
  default:
    console.log('Today is not Monday or Tuesday');
    break;
}

let x = null;
let y;

console.log(x == null); // Output: true
console.log(y == undefined); // Output: true
console.log(x === null); // Output: true
console.log(y === undefined); // Output: true

console.log(null == undefined); // true
console.log(null === undefined); // false

Во второй строке null === undefinedвозвращается , falseпотому что ===оператор выполняет строгое сравнение, что означает, что операнды не преобразуются в общий тип перед их сравнением. Так как nullи undefinedимеют разные типы, они не считаются равными.

Проверка существования значения : при проверке существования значения вы можете захотеть использовать ==и сравнить его с nullили undefinedпроверить, является ли оно ложным.

const myValue = '';
if (myValue == null) {
  console.log('The value is null or undefined');
}

const obj1 = { name: 'John' };
const obj2 = { name: 'John' };
const obj3 = obj1;
console.log(obj1 == obj2); // Output: false
console.log(obj1 === obj2); // Output: false
console.log(obj1 === obj3); // Output: true