===
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
truelubfalse.
Przykład
#console.log(1 === 1)
console.log(1 === '1')
console.log(1 == '1')
console.log(0 == '')
console.log(null == undefined)
console.log(null === undefined)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
#a === b
a !== bWięcej przykładów
#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])const result = Number('abc')
console.log(result === NaN)
console.log(Number.isNaN(result))
console.log(Object.is(result, NaN))const input = '5'
const correctAnswer = 5
console.log(input === correctAnswer)
console.log(Number(input) === correctAnswer)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. przezNumber(value)alboString(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
#- &&, ||, !Operatory logiczne I (&&), LUB (||) i NIE (!). Łączą warunki, a && i || zwracają jedną ze swoich stron.
- typeofZwraca napis z nazwą typu wartości, np. "number", "string" albo "object".
- switchPorównuje wartość z listą przypadków case i wykonuje kod od pierwszego pasującego.
- if...elseWykonuje blok kodu tylko wtedy, gdy warunek jest prawdziwy, a w przeciwnym razie opcjonalny blok else.
- Number.isNaN()Sprawdza, czy wartość jest dokładnie NaN.
- Object.is()Sprawdza, czy dwie wartości są takie same. Od === różni się tylko dla NaN oraz dla 0 i -0.
Widzisz błąd albo brakuje przykładu? Napisz do nas.