Logisches NICHT (!)

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Der logische NICHT-Operator (!) (logische Ergänzung, Negation) kehrt Wahrheitswerte um: wahr wird zu falsch und umgekehrt. Er wird typischerweise mit booleschen (logischen) Werten verwendet. Bei nicht-booleschen Werten gibt er false zurück, wenn sein einziger Operand in true konvertiert werden kann; andernfalls gibt er true zurück.

Probieren Sie es aus

Syntax

js
!x

Beschreibung

Gibt false zurück, wenn sein einziger Operand in true konvertiert werden kann; andernfalls gibt er true zurück.

Wenn ein Wert in true konvertiert werden kann, wird der Wert als truthy bezeichnet. Wenn ein Wert in false konvertiert werden kann, wird der Wert als falsy bezeichnet.

Beispiele für Ausdrücke, die in false umgewandelt werden können, sind:

  • null;
  • NaN;
  • 0;
  • leere Zeichenfolge ("" oder '' oder ``);
  • undefined.

Auch wenn der !-Operator mit Operanden verwendet werden kann, die keine booleschen Werte sind, kann er dennoch als boolescher Operator betrachtet werden, da sein Rückgabewert immer in einen booleschen Wert konvertiert werden kann. Um seinen Rückgabewert (oder einen beliebigen Ausdruck im Allgemeinen) explizit in den entsprechenden booleschen Wert zu konvertieren, verwenden Sie einen doppelten NICHT-Operator (!!) oder den Boolean-Konstruktor.

Beispiele

Verwendung von NICHT

Der folgende Code zeigt Beispiele für den ! (logisches NICHT)-Operator.

js
!true; // !t returns false
!false; // !f returns true
!""; // !f returns true
!"Cat"; // !t returns false

Doppeltes NICHT (!!)

Es ist möglich, mehrere NICHT-Operatoren in Serie zu verwenden, um explizit die Umwandlung eines beliebigen Wertes in den entsprechenden booleschen Wert zu erzwingen. Die Umwandlung basiert auf der "Truthiness" oder "Falsiness" des Wertes (siehe truthy und falsy).

Die gleiche Umwandlung kann durch die Funktion Boolean() erfolgen.

js
!!true; // !!truthy returns true
!!{}; // !!truthy returns true: any object is truthy...
!!new Boolean(false); // ...even Boolean objects with a false .valueOf()!
!!false; // !!falsy returns false
!!""; // !!falsy returns false
!!Boolean(false); // !!falsy returns false

Umwandlung zwischen NICHTs

Der folgende Vorgang mit booleschen Werten:

js
!!bCondition

ist immer gleich:

js
bCondition

Spezifikationen

Specification
ECMAScript Language Specification
# sec-logical-not-operator

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch