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”?
===
==
=
!=