Operatory porównania porównują wartości 2 operandów i sprawdzają, czy wyrażenie, które tworzą, jest true
czy false
. W tym przykładzie operator ścisłej równości (===
) służy do porównywania 2 operandów: wyrażenia 2 + 2
i wartości 4
. Ponieważ wynik wyrażenia i wartość liczbowa 4
są takie same, wyrażenie to zwraca wartość true
:
2 + 2 === 4
> true
Przekształcanie typu i równość
Do najczęściej używanych operatorów porównania należą ==
(nieścisłe porównanie) i ===
(ścisłe porównanie). ==
przeprowadza luźne porównanie 2 wartości, jeśli to możliwe, przymuszając operandy do dopasowania typów danych. Na przykład 2 == "2"
zwraca true
, mimo że porównywanie dotyczy wartości liczbowej i ciągu znaków.
2 == 2
> true
2 == "2"
> true
To samo dotyczy funkcji !=
, która zwraca true
tylko wtedy, gdy porównywane operandy nie są luźno równe.
2 != 3
> true
2 != "2"
> false
W przypadku rygorystycznych porównań za pomocą funkcji ===
lub !==
nie jest wykonywane przymusowe konwertowanie typu. Aby rygorystyczne porównanie zwracało wartość true
, porównywane wartości muszą mieć ten sam typ danych. Z tego powodu funkcja 2 == "2"
zwraca true
, ale funkcja 2 === "2"
zwraca false
:
2 === 3
> false
2 === "2"
> false
Aby uniknąć niejednoznaczności, która może wynikać z automatycznego zastąpienia, używaj w miarę możliwości ===
.
Operator | Opis | Wykorzystanie | Wynik |
---|---|---|---|
=== | Dokładnie równe | 2 === 2 | prawda |
!== | Nie jest ściśle równe | 2 != „2” | prawda |
== | Równa (lub „przybliżona”) | 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 |
Prawda i fałsz
Wszystkie wartości w JavaScript są domyślnie true
lub false
i mogą zostać skonwertowane na odpowiadającą wartość logiczną – np. za pomocą operatora porównywania „loosely equal”. Ograniczony zestaw wartości, które są przymusowo zastępowane wartością false
:
0
null
undefined
NaN
- pusty ciąg znaków (
""
);
Wszystkie inne wartości są przekształcane do wartości true
, w tym ciągów znaków zawierających co najmniej 1 znak i wszystkich liczb niezerowych. Są one powszechnie nazywane wartościami „prawda” i „fałsz”.
"My string" == true
> true
100 == true
> true
0 == true
> false
Operatory logiczne
Użyj operatorów logicznych I (&&
), LUB (||
) i NIE (!
), aby kontrolować przebieg skryptu na podstawie oceny co najmniej 2 instrukcji warunkowych:
2 === 3 || 5 === 5;
> true
2 === 2 && 2 === "2"
> false
2 === 2 && !"My string."
> false
Wyrażenie logiczne NOT (!
) neguje wartość prawdziwą lub fałszywą operandu, zwracając true
, jeśli operand zwraca false
, oraz false
, jeśli operand zwraca true
:
true
> true
!true
> false
!false
> true
Użycie operatora logicznego NOT (!
) przed innym typem danych, np. liczbą lub ciągiem znaków, powoduje przekształcenie tej wartości na wartość logiczną i odwrócenie wartości prawda lub fałsz wyniku.
"string"
> "string"
!"string"
> false
0
> 0
!0
> true
Zwykle używa się 2 operatorów NOT, aby szybko wymusić na danych odpowiednią wartość logiczną:
!!"string"
> true
!!0
> false
Operatory logiczne AND i OR same z siebie nie wykonują żadnego przymusu. Zwracają wartość jednego z 2 obliczanych operandów, a wybrany operand jest określany przez tę ocenę.
Operator logiczny AND (&&
) zwraca pierwszy z 2 argumentów tylko wtedy, gdy ten argument ma wartość false
, a w przeciwnym razie zwraca drugi argument. W porównaniach, które dają wynik typu logicznego, zwraca true
tylko wtedy, gdy operandy po obu stronach operatora logicznego I dają wynik true
. Jeśli dowolna strona zwraca wartość false
, zwraca wartość false
.
true && false
> false
false && true
> false
false && false
> false
true && true
> true
Gdy funkcja &&
jest używana z 2 argumentami niebędącymi wartościami logicznymi, pierwszy z nich jest zwracany w niezmienionej postaci, jeśli można go sprowadzić do wartości false
. Jeśli pierwszy operand można sprowadzić do 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"
Operator logiczny OR (||
) zwraca pierwszy z 2 operandów tylko wtedy, gdy ten operand ma wartość true
, a w przeciwnym razie zwraca drugi operand. W porównaniach, które dają wynik logiczny, zwraca true
, jeśli jeden z operandów ma wartość true
, a jeśli żadna z części nie ma wartości true
, zwraca false
:
true || false
> true
false || true
> true
true || true
> true
false || false
> false
Gdy używasz funkcji ||
z 2 operandami niebędącymi wartościami logicznymi, zwraca ona pierwszy operand bez zmian, jeśli można go sprowadzić do wartości true
. Jeśli pierwszy operand można sprowadzić do 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 zliczający wartości null
Wprowadzony w ES2020 operator „nullish coalescing” (??
) zwraca pierwszy operand tylko wtedy, gdy ma on 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
??
jest podobny do operatora logicznego LUB, ale bardziej rygorystyczny w sposobie obliczania pierwszego operanda. ||
zwraca drugi operand w przypadku dowolnego wyrażenia, które można sprowadzić do typu false
, w tym undefined
i null
. ??
zwraca drugi operand tylko wtedy, gdy pierwszy operand jest równy null
lub undefined
, nawet jeśli można go sprowadzić do 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 pojedynczy znak równości (=
), który służy do przypisywania wartości zadeklarowanej zmiennej.
Używaj operatorów przypisania logicznego, aby przypisać wartość zmiennej warunkowo na podstawie jej wartości logicznej.
Operator przypisania logicznego AND (&&=
) ocenia drugi operand i przypisuje go do pierwszego operanda, jeśli tylko ten pierwszy zostanie oceniony jako true
. Oznacza to, że „jeśli pierwszy operand jest prawdziwy, przypisz mu wartość drugiego operanda”.
let myVariable = false;
myVariable &&= 2 + 2;
> false
myVariable = true;
myVariable &&= 2 + 2;
> 4
Prawdziwość lub fałsz pierwszego operanda określa, czy przypisanie zostanie wykonane. Jednak próba obliczenia pierwszego operanda za pomocą operatora porównywania spowoduje uzyskanie wartości logicznej true
lub false
, której nie można przypisać wartości:
let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment
Operator przypisania logicznego LUB (||=
) ocenia drugi operand i przypisuje go do pierwszego, jeśli pierwszy operand ma wartość false
. Oznacza to, że jeśli pierwszy operand ma wartość FAŁSZ, przypisuje mu się wartość drugiego operanda:
let myVariable = false;
myVariable ||= 2 + 2;
> 4
myVariable = true;
myVariable ||= 2 + 2;
> true
Sprawdź swoją wiedzę
Który operator oznacza „ścisłe dopasowanie”?
===
==
=
!=