Heim > Web-Frontend > js-Tutorial > Hauptteil

## Was macht der Doppel-Tilde-Operator (~~) eigentlich in JavaScript?

Linda Hamilton
Freigeben: 2024-11-01 03:29:28
Original
431 Leute haben es durchsucht

## What Does the Double Tilde Operator (~~) Actually Do in JavaScript?

Enthüllung der wahren Natur von Double Tiltern (~~) in JavaScript

Im Bereich JavaScript sticht der -Operator hervor mit seiner rätselhaften Funktionalität. Es ist allgemein bekannt, dass die einzelne Tilde (~) bitweises NICHT bedeutet, was uns zum Nachdenken bringt: Was bewirkt ihr Dublett ()?

Im Gegensatz zur Intuition, dass sie die bitweise Negation, den ~~-Operator, verdoppelt hat eine überraschende Wirkung. Er hat die Fähigkeit, den Dezimalteil einer Zahl zu kürzen und sie so effektiv auf die nächste ganze Zahl zu runden.

Hinter den Kulissen arbeitet der ~~-Operator, indem er seinen Operanden als vorzeichenbehaftete 32-Bit-Ganzzahl behandelt bitweise Operationen unabhängig vom tatsächlichen Typ des Operanden (Zahl, Zeichenfolge usw.). Dadurch wird der Bruchteil verworfen und das Ergebnis ist immer eine Zahl.

Genau genommen simuliert der ~~-Operator im Wesentlichen die folgende Funktion:

function truncate(x) {
  if(x < 0) return Math.ceil(x);
  else return Math.floor(x);
}
Nach dem Login kopieren

Diese Operation gilt jedoch Nur wahr, wenn der Wert von x im Bereich von -(2^31) bis 2^31 - 1 (einschließlich) liegt. Außerhalb dieses Bereichs kann es zu einem Überlauf kommen, der zu unvorhersehbaren Ergebnissen führt.

~~ kann zwar nützlich sein, um String-Argumente schnell in Zahlen umzuwandeln, seine Einschränkungen (Möglichkeit eines Überlaufs und falsches Verhalten bei nicht ganzzahligen Werten) machen es jedoch möglich es ist für die numerische Manipulation weniger wünschenswert. Stattdessen ist es im Allgemeinen vorzuziehen, für diese Zwecke x oder Number(x) zu verwenden.

Doppelte Negation entschlüsseln

Das Verständnis des ~~-Operators als Negation einer Negation erfordert ein tieferer Einblick in die binäre Darstellung. Nehmen Sie als Beispiel die Zahl -43,2, dargestellt in vorzeichenbehafteter 32-Bit-Binärform (Zweierkomplement):

-43.2<sub>10</sub> = 11111111111111111111111111010101<sub>2</sub>
Nach dem Login kopieren

Das Invertieren aller Bits (bitweises NICHT) ergibt:

NOT -43<sub>10</sub> = 00000000000000000000000000101010<sub>2</sub> = 42<sub>10</sub>
Nach dem Login kopieren

Die erneute Anwendung der Negation führt zu:

NOT 42<sub>10</sub> = 11111111111111111111111111010101<sub>2</sub> = -43<sub>10</sub>
Nach dem Login kopieren

Dieses Endergebnis (-43) unterscheidet sich vom Ergebnis von Math.floor(-43.2), das -44 wäre. Dies liegt daran, dass ~~ Zahlen von Null weg aufrundet, im Gegensatz zu Math.floor, das abrundet.

Das obige ist der detaillierte Inhalt von## Was macht der Doppel-Tilde-Operator (~~) eigentlich in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage