Doppelter Tilde-Operator: Ein tieferer Einblick in ~~
In JavaScript stoßen Sie möglicherweise auf den ~~-Operator, auch bekannt als „ Doppeltilde-Operator. Während die einzelne Tilde ~ das bitweise NICHT darstellt, fragen Sie sich vielleicht, welche Rolle die doppelte Tilde spielt.
Entgegen der Intuition führt ~~ kein NOT oder eine NOT-Operation aus. Stattdessen wandelt es seine Operanden implizit in 32-Bit-Ganzzahlen um und entfernt alles nach dem Komma. Dieses Verhalten gilt sowohl für Zahlen als auch für Zeichenfolgen.
Technisch gesehen verhält sich ~~ wie die folgende Funktion:
<code class="javascript">function(x) { if(x < 0) return Math.ceil(x); else return Math.floor(x); }</code>
Sie liefert jedoch nur dann genaue Ergebnisse, wenn der Operand x im Bereich von liegt -(2^31) bis 2^31 - 1. Außerhalb dieses Bereichs kommt es zu einem Überlauf, der zum „Umbrechen“ der Zahl führt.
Es mag verlockend erscheinen, ~~ für die numerische Analyse von String-Argumenten zu verwenden , aber davon wird abgeraten. Überlauf und Unrichtigkeit bei Nicht-Ganzzahlen machen es zu einer schlechten Wahl. Bevorzugen Sie stattdessen x oder Number(x).
Doppelte Tilde als NOT von NOT verstehen
Um zu verstehen, wie ~~ effektiv eine NOT- oder NOT-Operation durchführt, betrachten Sie Folgendes folgendes Beispiel:
Die Zahl -43,2 wird als vorzeichenbehaftete 32-Bit-Binärzahl dargestellt:
-43.2 = 11111111111111111111111111010101 (2)
Bitweise Anwendung NICHT:
NOT -43.2 = 00000000000000000000000000101010 (2) = 42
Eine zweite Anwendung von Bitweises NICHT:
NOT 42 = 11111111111111111111111111010101 (2) = -43
Beachten Sie, dass der ~~-Operator das gleiche Ergebnis wie zwei aufeinanderfolgende bitweise NICHT-Operationen erzeugt, auch wenn er das NICHT einer NICHT-Operation nicht auf einfache Weise ausführt.
Das obige ist der detaillierte Inhalt vonWas bewirkt der Doppeltilde-Operator (~~) in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
if($res){
return json_encode(array('code'=>1,'msg'=>'成功'));
}else{
return json_encode(array('code'=>0,'msg'=>'失败'));
}
}
public function
}