Operatory porównania

Operatory porównania porównują wartości 2 operandów i oceniają, czy określona instrukcja to true czy false. W tym przykładzie użyto operatora ścisłej równości (===) do porównania 2 operandów: wyrażenia 2 + 2 i wartości 4. Wynik wyrażenia i wartość liczbowa 4 są takie same, więc to wyrażenie zwraca wartość true:

2 + 2 === 4
> true

Wpisz przymus i równość

2 najczęściej używane operatory porównania to == – czyli luźna równość, i === – ścisła równość. == wykonuje luźne porównanie 2 wartości, wymuszając w miarę możliwości operandy do pasujących typów danych. Na przykład funkcja 2 == "2" zwraca wartość true, mimo że porównanie dotyczy wartości liczbowej i ciągu znaków.

2 == 2
> true

2 == "2"
> true

To samo dotyczy funkcji !=, która zwraca wartość true tylko wtedy, gdy porównywane argumenty nie są luźno równe.

2 != 3
> true

2 != "2"
> false

Ścisłe porównania z użyciem funkcji === lub !== nie powodują przywołania typu. Aby możliwe było ścisłe porównanie z wartością true, porównywane wartości muszą mieć ten sam typ danych. Z tego powodu 2 == "2" zwraca wartość true, ale 2 === "2" zwraca wartość false:

2 === 3
> false

2 === "2"
> false

Aby uniknąć niejasności, które mogą wynikać z automatycznego koordynacji, w miarę możliwości użyj ===.

Operator Opis Wykorzystanie Wyniki
=== Dokładnie równe 2 === 2 prawda
!== Nie są równe 2 !== "2" prawda
== Równe (lub „luźno równe”) 2 == „2” prawda
!= Nie równa się 2 != "3" prawda
> To więcej niż 3 > 2 prawda
>= Ma wartość większą lub równą 2 >= 2 prawda
< To mniej niż 2 < 3 prawda
<= Ma wartość mniejszą lub równą 2 <= 3 prawda

Prawdziwe i fałszywe

Wszystkie wartości w języku JavaScript to domyślnie true lub false i można je zmienić na odpowiednią wartość logiczną, np. za pomocą komparatora „luźno równe”. Ograniczony zestaw wartości jest wymuszany na false:

  • 0
  • null
  • undefined
  • NaN
  • Pusty ciąg ("")

Wszystkie inne wartości wymuszane są na true, w tym na każdy ciąg znaków zawierający co najmniej 1 znak i wszystkie liczby inne niż zero. Są to wartości określane jako „prawda” i „fałszywe”.

"My string" == true
> true

100 == true
> true

0 == true
> false

Operatory logiczne

Użyj operatorów logicznych I (&&), LUB (||) i NOT (!), aby kontrolować przepływ skryptu na podstawie oceny co najmniej 2 instrukcji warunkowych:


2 === 3 || 5 === 5;
> true

2 === 2 && 2 === "2"
> false

2 === 2 && !"My string."
> false

Logiczne wyrażenie NIE (!) neguje wartość prawdziwą lub fałszywą argumentu, oceniając, czy argument jest prawdziwy na podstawie danych, i przyjmuje wartość true, jeśli operand zwraca wartość false, lub false, jeśli operand zwraca wartość true:


true
> true

!true
> false

!false
> true

Użycie logicznego operatora NIE (!) przed innym typem danych, takim jak liczba lub ciąg znaków, przekształca tę wartość w wartość logiczną i odwraca prawdziwą lub fałszywą wartość wyniku.

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

Aby szybko dopasować dane do wartości logicznej, stosuje się 2 operatory NIE:

!!"string"
> true

!!0
> false

Operatory logiczne I i LUB nie przeprowadzają samych przywołań. Zwracają wartość 1 z 2 ocenianych argumentów, przy czym wybrany operand jest określany na podstawie tej oceny.

Logiczne ORAZ (&&) zwraca pierwszy z 2 operandów tylko wtedy, gdy ten operand zwraca wartość false, a drugi operand w przeciwnym razie. W porównaniach, które oceniają wartości logiczne, zwraca true tylko wtedy, gdy operandy po obu stronach argumentu logicznego ORAZ mają wartość true. Jeśli któraś ze stron zwraca wartość false, zwraca wartość false.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

Gdy używasz && z 2 operandami nielogicznymi, pierwszy operand jest zwracany bez zmian, jeśli można go zmienić na false. Jeśli pierwszy operand można przekształcić na wartość true, drugi operand jest zwracany bez zmian:

false && "My string"
> false

null && "My string"
> null

"My string" && false
> false

"My string" && "My second string"
> "My second string"

2 === 2 && "My string"
> "My string"

Logiczne LUB (||) zwraca pierwszy z 2 operandów tylko wtedy, gdy ten operand zwraca wartość true, a drugi operand w przeciwnym razie. W porównaniu z wartościami logicznymi zwraca to true, jeśli dowolny operand zwraca wartość true, a jeśli żadna ze stron nie zwraca wartości true, zwraca wartość false:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

Gdy używasz funkcji || z 2 operandami nielogicznymi, zwraca on pierwszy operand bez zmian, jeśli można go zmienić na true. Jeśli pierwszy operand można przekształcić na wartość false, drugi operand jest zwracany bez zmian:

false || "My string"
> "My string"

null || "My string"
> "My string"

"My string" || false
> "My string"

"My string" || "My second string"
> "My string"

2 === 2 || "My string"
> true

Pusty operator coalescingu

Wprowadzony w ES2020 r. operator „nullish coalescing” (??) zwraca pierwszy operand tylko wtedy, gdy ten operand ma dowolną wartość inną niż null lub undefined. W przeciwnym razie zwraca drugi operand.

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

Funkcja ?? jest podobna do logicznej LUB, ale bardziej rygorystyczna w sposobie oceny pierwszego argumentu. || zwraca drugi operand dla dowolnego wyrażenia, które można przekształcić do false, w tym undefined i null. ?? zwraca drugi operand, gdy pierwszy operand ma wartość inną niż null lub undefined, nawet jeśli można go zmienić na false:

0 ?? "My string";
> 0

false ?? "My string";
> false

undefined ?? "My string";
> "My string"

Logiczne operatory przypisywania

Użyj operatorów przypisywania, aby przypisać wartość drugiego operatora do pierwszego operatora. Najczęstszym przykładem jest pojedynczy znak równości (=) służący do przypisywania wartości do zadeklarowanej zmiennej.

Użyj logicznych operatorów przypisywania, aby warunkowo przypisać wartość do zmiennej na podstawie jej prawdziwości lub fałszywej wartości.

Operator logiczny ORAZ (&&=) ocenia drugi operand i przypisuje go do pierwszego operandu tylko wtedy, gdy pierwszy operand zwróci wartość true – w efekcie „jeśli pierwszy operand jest prawdziwy, przypisz mu wartość drugiego operandu”:

let myVariable = false;
myVariable &&= 2 + 2;
> false

myVariable = true;
myVariable &&= 2 + 2;
> 4

Prawda czy fałszywa wartość pierwszego argumentu określa, czy przypisanie zostanie wykonane. Jednak próba oceny pierwszego operandu przy użyciu operatora porównania daje wartość logiczną true lub false, której nie można przypisać:

let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment

Operator logiczny LUB (||=) ocenia drugi operand i przypisuje go do pierwszego operandu, jeśli pierwszy operand zwraca wartość false – w efekcie „jeśli pierwszy operand jest fałszywy, przypisz mu wartość drugiego argumentu”:

let myVariable = false;
myVariable ||= 2 + 2;
> 4

myVariable = true;
myVariable ||= 2 + 2;
> true

Sprawdź swoją wiedzę

Który operator wskazuje „ściśle równe”?

===
==
=
!=