Operatory porównania

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

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

==
=
===
!=