===

Operator ścisłej równości porównuje wartości bez konwersji typów: true daje tylko ten sam typ i ta sama wartość.

Zwraca
true lub false.
Na tej stronie

Przykład

#
JavaScript
console.log(1 === 1)
console.log(1 === '1')
console.log(1 == '1')
console.log(0 == '')
console.log(null == undefined)
console.log(null === undefined)
Konsola
true
false
true
true
true
false

Definicja i zastosowanie

#

Operator === zwraca true, gdy obie strony mają ten sam typ i tę samą wartość. Niczego nie zamienia: liczba 1 i napis "1" są dla niego różne. Jego zaprzeczeniem jest !==.

Luźny operator == przed porównaniem konwertuje typy według zawiłych reguł, stąd wyniki 0 == "" czy "1" == 1 równe true. Dlatego w nowoczesnym kodzie standardem jest ===. Jedynym popularnym wyjątkiem jest value == null, które sprawdza naraz null i undefined.

Obiekty, tablice i funkcje są porównywane przez referencję, a nie zawartość: dwa osobno utworzone obiekty nigdy nie są sobie równe. Szczególnym przypadkiem jest NaN, które nie jest równe nawet samemu sobie. Do jego wykrycia służą Number.isNaN() i Object.is().

Składnia

#
Składnia
a === b
a !== b

Więcej przykładów

#
Obiekty porównywane przez referencję
JavaScript
const a = { level: 1 }
const b = { level: 1 }
const c = a

console.log(a === b)
console.log(a === c)
console.log([1, 2] === [1, 2])
Konsola
false
true
false
NaN i Object.is()
JavaScript
const result = Number('abc')

console.log(result === NaN)
console.log(Number.isNaN(result))
console.log(Object.is(result, NaN))
Konsola
false
true
true
Dane z formularza są napisami
JavaScript
const input = '5'
const correctAnswer = 5

console.log(input === correctAnswer)
console.log(Number(input) === correctAnswer)
Konsola
false
true

Wartości z pól formularza i parametrów adresu zawsze są napisami. Zamień je jawnie na liczbę przed porównaniem, zamiast polegać na ==.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Pisz zawsze === i !==. Jeśli porównujesz wartości różnych typów, zrób konwersję jawnie, np. przez Number(value) albo String(value).
  • Aby porównać zawartość dwóch tablic lub obiektów, porównaj konkretne pola albo użyj funkcji do głębokiego porównania. === sprawdza tylko, czy to ten sam obiekt.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.