Operatory porównania

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 undefinednull. ?? 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”?

===
==
=
!=