Operatory porównania porównują wartości dwóch operandów i oceniają, czy
instrukcja, którą tworzą, to true
lub false
. W poniższym przykładzie użyto parametru
operator ścisła równość (===
), aby porównać 2 operandy: wyrażenie
2 + 2
oraz wartość 4
. Ponieważ wynik wyrażenia i liczba
wartości 4
są takie same, przyjmuje wartość true
:
2 + 2 === 4
> true
Przymus i równość typu
Dwa najczęściej używane operatory porównania to ==
dla luźnej równości
i ===
dla ścisłej równości. Funkcja ==
wykonuje luźne porównanie między dwiema wartościami
w miarę możliwości wymuszając operandy na pasujących typach danych. Dla:
np. funkcja 2 == "2"
zwraca true
, mimo że trwa porównanie
między wartością liczbową a ciągiem znaków.
2 == 2
> true
2 == "2"
> true
To samo dotyczy funkcji !=
, która zwraca true
tylko wtedy, gdy operandy są
w porównaniu nie są luźno równe.
2 != 3
> true
2 != "2"
> false
Rygorystyczne porównania z użyciem funkcji ===
lub !==
nie powodują przekształcania typu. Dla
ścisłe porównanie, aby dokonać oceny do true
, porównywane wartości muszą mieć
tego samego typu danych. Z tego powodu funkcja 2 == "2"
zwraca wartość true
, ale 2 === "2"
zwraca false
:
2 === 3
> false
2 === "2"
> false
Aby rozwiać wszelkie wątpliwości, które mogą wynikać z automatycznego przymusu, użyj atrybutu ===
, gdy
jak to tylko możliwe.
Operator | Opis | Wykorzystanie | Wynik |
---|---|---|---|
=== | Dokładnie równe | 2 === 2 | prawda |
!== | Nie równa się ściśle | 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 JavaScripcie mają domyślnie wartość true
lub false
i można je zmienić na
odpowiednią wartość logiczną, np. przez użycie argumentu „luźno równa się”
funkcja porównawcza. Ograniczony zestaw wartości zmienia się na false
:
0
null
undefined
NaN
- Pusty ciąg (
""
)
Wszystkie inne wartości zmieniają się na true
, w tym na dowolny ciąg zawierający co najmniej jeden
znaków i wszystkich cyfr innych niż zero. Są one potocznie nazywane „prawdą”. oraz
„falsy” .
"My string" == true
> true
100 == true
> true
0 == true
> false
Operatory logiczne
Aby sterować przepływem skryptu na podstawie oceny co najmniej 2 instrukcji warunkowych, użyj operatorów logicznych AND (&&
), OR (||
) i NOT (!
):
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Wyrażenie logiczne NIE (!
) neguje wartość prawdziwą lub błędną operandu i zwraca wartość true
, jeśli operand zwraca wartość false
, oraz false
, jeśli operand zwraca wartość true
:
true
> true
!true
> false
!false
> true
Użycie operatora logicznego NIE (!
) przed innym typem danych, np.
liczby lub ciągu tekstowego, zmienia tę wartość na wartość logiczną i odwraca
błędną wartość wyniku.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Powszechną praktyką jest używanie 2 operatorów NIE, aby szybko zmusić dane do pasująca wartość logiczna:
!!"string"
> true
!!0
> false
Operatory logiczne AND i OR nie wprowadzają żadnego wymuszonego trybu wymuszonego. Ta zwraca wartość jednego z dwóch ocenianych operandów, przy czym wybrany operand określony przez tę ocenę.
Logiczne ORAZ (&&
) zwraca pierwszy z dwóch operandów tylko wtedy, gdy ten operand
zwraca wartość false
, a drugi operand jest inny. W porównaniu z tym
zwraca wartości logiczne, zwraca true
tylko wtedy, gdy operandy po obu stronach
z operatorem logicznym ORAZ, który wynosi true
. Jeśli każda ze stron zwróci wartość false
,
zwraca false
.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Jeśli używany jest argument &&
z 2 operandami nielogicznymi, zwracany jest pierwszy z nich
nie zmienia się, jeśli można zmienić ją na false
. Jeśli pierwszy operand można zmienić
w funkcji 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 dwóch operandów tylko wtedy, gdy ten operand
zwraca wartość true
, a drugi operand jest inny. W porównaniu z tym
zwraca wartości logiczne, co oznacza, że zwraca true
, jeśli jeden z argumentów
zwraca wartość true
, a jeśli żadna ze stron nie sprawdzi się jako true
, zwracana jest wartość
false
:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Jeśli używasz funkcji ||
z 2 operandami nielogicznymi, zwraca pierwszy operand
bez zmian, jeśli można ją zmienić na true
. Jeśli pierwszy operand można zmienić
w funkcji 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
Operator scalania wsadowego o wartości nullish
Wprowadzone w ES2020 r.
„operator łączenia wartości nullish” (??
) zwraca pierwszy operand tylko wtedy, gdy
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 logicznego operatora LUB, ale jest bardziej rygorystyczna, jeśli chodzi o pierwszy operand.
oceniono. ||
zwraca drugi operand dla dowolnego wyrażenia, które może
zmieniono na false
, w tym undefined
i null
. ??
zwraca drugą
gdy pierwszy operand jest czymś innym niż null
lub undefined
, nawet jeśli to
może zostać przekształcony w false
:
0 ?? "My string";
> 0
false ?? "My string";
> false
undefined ?? "My string";
> "My string"
Operatory przypisania logicznego
Użyj operatorów przypisania, aby przypisać wartość drugiego operatora do pierwszego operatora
. Najczęstszym przykładem jest tu pojedynczy znak równości (=
) używany do
przypisać wartość do zadeklarowanej zmiennej.
Używanie logicznych operatorów przypisania do warunkowego przypisywania wartości do zmiennej na podstawie prawdziwości lub fałszu wartości tej zmiennej.
Operator logiczny AND przypisania (&&=
) ocenia drugi operand i
przypisuje wartość do pierwszego operandu, jeśli tylko pierwszy operand zostanie obliczony do
true
– np. „jeśli pierwszy operand jest prawdziwy, przypisz mu wartość funkcji
drugi operand:"
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
Wartość prawdziwa lub błędna pierwszego operandu określa, czy przypisanie
. Jednak próba oceny pierwszego operandu za pomocą porównania
daje wartość logiczną true
lub false
, której nie można przypisać
wartość:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
Operator logiczny LUB (||=
) ocenia drugi operand i
przypisz do pierwszego operandu, jeśli pierwszy operand zwraca wartość false
:
„jeśli pierwszy operand jest fałszywy, przypisz mu wartość drugiego argumentu
operand :"
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Sprawdź swoją wiedzę
Który operator wskazuje „ściśle równe”?
==
=
!=
===