1. Nicht numerischer Typ zum numerischen Wert
Bei Verwendung von Number() Conversion:
Bei Verwendung von parseInt() zum Konvertieren:
var num1 = parseInt ("10", 2); // 2 Parse var num2 = parseInt ("10", 8); // 8 Parse var num3 = parseInt ("10", 10); // 10 Parse var num4 = parseInt ("10", 16); // 16 anhexadezimal analysieren Bei Verwendung von parseFloat() Conversion:
Der erste Unterschied zwischen Parsefloat und ParseInT besteht darin, dass es beim Parsen einer Zeichenfolge auf ein ungültiges schwimmendes pointisches Zeichen stößt, was viel mehr als ParseInt ist.
Gibt 0 zurück, wenn die Hexadezimalwerte analysiert werden
var num = parsefloat ("0xa"); // 0var num = parseInt ("0xa"); // 10Die Parsefloat -Funktion hat keinen zweiten Parameter, der die Kardinalität angibt, sodass nur die Dezimalwerte analysiert werden.
Wenn die Zeichenfolge eine Ganzzahl ist, gibt sie eine Ganzzahl anstelle einer schwimmenden Punktzahl zurück
var num = parseFloat("2.125e7"); //31250000
2. Verwenden Sie toString (), um die Ausgabewerte in verschiedenen Ziffern
Diese Bar gilt für Ganzzahlen. Wir können ToString () verwenden, um Ganzzahlen in jedem Binärformat zurückzugeben.
var num = 10; alert (num.tostring ()); //"10"Anert(num.toString(9)); //"11"alert(num.tostring(16)); //"A"
3. achten
Bei Verwendung von Bitoperatoren für NAN und Unendlichkeit werden beide Werte als 0 behandelt. Wenn ein Bitoperator auf einen nicht numerischen Wert angewendet wird, wird der Wert unter Verwendung der Funktion number () in einen numerischen Wert konvertiert.
Eine andere Sache zu beachten ist, dass die nicht signierte rechte Verschiebung negativer Zahlen und die unsignierte rechte Verschiebung darin besteht, den leeren Speicherplatz mit 0 zu füllen, im Gegensatz zur signierten rechten Verschiebung mit Zeichenbits, sodass die nicht signierte rechte Verschiebung und die signierte rechte Verschiebung der positiven Zahlen gleich sind, aber die negative Zahl ist unterschiedlich. Der nicht signierte Rechtsverschiebungsvorgang behandelt den negativen Binärcode als positiven Binärcode, und die negative Zahl wird in der Komplementform dargestellt, was dazu führt, dass das Ergebnis der nicht signierten rechten Verschiebung sehr unterschiedlich ist.
var oldValue = -64; var newValue = oldValue >>> 5
4. besondere numerische Operationen
Bei numerischen Operationen ist das Ergebnis NAN.
Verwenden Sie für nicht numerische Werte einen One-in---Additions- oder Subtraktionsvorgang (+,-plus oder negatives Vorzeichen). Wenn der Wert nicht in einen numerischen Wert konvertiert werden kann (mit Number () -Methode konvertiert), wird die NAN zurückgegeben.
var s1 = "01", s2 = "1.1", s3 = "z", b = false, o = {valueOf: function () {return -1;}}; S1 = +S1; // 1 + Änderung zu -: -1S2 = + S2; //1.1 -1.1S3 = +S3; // nan nanb = +b; // 0 0o = -o; //-1 1Das Multiplizieren von Unendlichkeit und 0 entspricht der NAN, und das Multiplizieren der Nicht -0 ist in Abhängigkeit vom Vorzeichen des Multiplikators Unendlichkeit und -Infinität. Multiplizieren Sie Unendlichkeit und Unendlichkeit gleich unendlich.
var num1 = unendlich, num2 = 0, num3 = -2, num4 = -Infinity; alert (num1 * num2); // nanalert (num1 * num3); //-Infinityalert (num1 * num4); //-Unendlichkeit
Null ist in Null unterteilt und ist NAN, und ungleich Null -Zahlen geteilt durch Null sind Unendlichkeit oder -Infinität. Unendlichkeit geteilt durch Unendlichkeit als Nan
Für den Modulo -Betrieb gilt die folgende Gleichung:
Unendlich%2 = nan; 2%-Infinity = 2; 0%Infinity = 0; // Solange der Divisor 0 ist, ist der Divisor nicht Nan, das Ergebnis ist 0Infinity%0 = Nan; // Der Divisor kann eine beliebige Zahl sein, und solange der Divisor 0 ist, ist das Ergebnis Naninfinity%Infinity = Nan
Additionsbetrieb: Wenn beide Operanden Strings sind, wird + eine String -Verkettung. Wenn einer eine Zeichenfolge ist und der andere ein numerischer Wert ist, konvertieren Sie den numerischen Wert in eine Zeichenfolge und verkettet dann die Zeichenfolge. Wenn ein Operand ein Objekt ist, ruft der Boolesche Wert zunächst seine Wertmethode auf. Wenn nichts, rufen Sie die ToString -Methode an. Bestimmen Sie dann, dass das + Zeichen mit dem Return -Wert -Typ an die Zeichenfolge verbunden oder hinzugefügt werden soll.
Infinity + -Infinity = nan; var p = {valueOf: function () {return -1; }}; var num = 1; var result = num +p; alert (result); // 0 add var p = {valueOf: function () {return "nicht eine num"; }}; var num = 1; var result = num +p; alert (result); // 1NOT eine TAM -String -VerkettungSubtraktionsvorgang: Subtraktionsvorgang ist dem Additionsbetrieb sehr ähnlich, und die Verarbeitung von Objekten ist gleich, sodass ich ihn nicht mehr erklären werde.
Infinity - Infinity = Nan; -Infinity - -Infinity = nan;
5. Verwendung von relationalen Operatoren
Die relationalen Operatoren sind weniger als (<), größer als (>), weniger oder gleich (<=) und größer als oder gleich (> =)
Solange es einen Wert gibt, wird der numerische Vergleich durchgeführt und der andere ist kein numerischer Wert und wird in einen numerischen Wert umgewandelt. Verwenden Sie zuerst ValueOF für das Objekt und verwenden Sie dann das ToString. Unabhängig davon, in welcher Operation das Objekt ausgeführt wird, ist dies wahr. Wenn Wert auf Wert ist, wird ValueOF verwendet, um den Wert zurückzugeben, andernfalls wird das Tostring verwendet, um den Wert zurückzugeben.
Beide sind Zeichenfolgen und vergleichen Sie dann den Charakter -Codierungswert der Zeichenfolge (ASCII -Wert)
In Bezug auf den ersten sollte beachtet werden, dass, wenn eine Zeichenfolge ein numerischer Wert ist und eine Zeichenfolge nicht in einen numerischen Wert konvertiert werden kann, die folgende Situation als NAN auftritt.
var result = "a" <3; // False A konvertiert a zu nanvar result = "a"> = 3; // falsch eine beliebige Zahl im Vergleich zu NAN ist falsch
6. == und ===
In JavaScript wird der Vergleich in zwei Situationen unterteilt, wenn die beiden Seiten der Gleichung unterschiedliche Typen haben oder nur ein Objekt enthalten ist, und der Vergleich nach der Transformation wird direkt mit der Transformation verglichen. == soll zuerst konvertieren und vergleichen, === soll direkt ohne Konvertierung verglichen werden. Für === gibt es falsche zurück, solange die Typen nicht gleich sind. Für == ist es in die folgenden Situationen unterteilt:
True wird in 1 konvertiert, false wird in 0 konvertiert.
Im Vergleich von Zeichenfolgen mit numerischen Werten werden Zeichenfolgen in numerische Werte konvertiert.
Wenn auf beiden Seiten der Gleichung nur ein Objekt vorhanden ist, ruft dieses Objekt ValueOF auf, um den Basistyp zu erhalten, z. Wenn beide Seiten Objekte sind, wird keine Transformation durchgeführt.
var p = {"name": "a"}; var q = {"name": "a"} var o = p; alert (q == p); // FALSE Die Adressen der Objekte, auf die durch P und Q hingewiesen wurden, sind unterschiedlich, obwohl der Inhalt des Objekts die gleiche Warnung ist (o == p); //WAHRHier sind die besonderen Vergleiche
null == undefiniert // Truenan!
7. For-In-Erklärung
Die Ausgangsreihenfolge von Aussagen ist unvorhersehbar, und die Reihenfolge kann je nach Browser variieren.
Wenn die IT -Variable nicht null oder undefiniert ist, wird der Fehler nicht mehr unter ECMAScript 5 geworfen, aber der Schleifenkörper wird nicht ausgeführt. Wenn Sie eine Vorwärtskompatibilität wünschen, werden Sie beurteilen, dass es vor der Schleife nicht null oder undefiniert ist.
8. SWETHC -Aussage
Switch kann einen beliebigen Datentyp verwenden.
Der Wert eines Falles kann eine Konstante, eine Variable und ein Ausdruck sein.
Die Switch -Anweisung verwendet den kongruenten Vergleichsoperator (===) beim Vergleich von Werten.
var num = 25; switch (true) {case num <0: alert ("weniger 0"); brechen; Fall num> = 0: alert ("mehr als 0"); brechen; Standard: alert ("Fehler");}9 Funktionsnutzung
Wenn in der Funktion oder Rückgabe keine Rückgabeanweisung vorhanden ist, hat die Funktion nicht definiert.
Die Definition einer Funktion stimmt nicht mit den Parametern der Funktion beim Aufrufen überein. Mit anderen Worten, die beiden Parameter (formale Parameter und tatsächliche Parameter) haben keine Verbindung. Die zur Definition einer Funktion bereitgestellten Variablen sind nur bequemer zu bedienen. Selbst wenn sie nicht definiert sind, können die an die Funktion übergebenen Parameter erhalten werden (durch Argumente []).
Funktion HowmanyArgs () {alert (Argumente.length);} Howmanyargs ("a"); // 1Wowmanyargs ("a", "b"); // 2HowManyargs (); // 0Die Beziehung zwischen formalen Parametern und Argumenten [] ist wie folgt und achtet auf den Unterschied zwischen dem strengen Modus und dem Nicht-Stufe-Modus.
Funktion HowmanyArgs (ss) {Argumente [0] = "Test"; Argumente [1] = "test2" -Aarm (Argumente [0]); // Testalarm (Argumente [1]); // Test2 Alert (SS); // Test} Howmanyargs ("a"); Funktion HowmanyArgs (ss) {"Strict" Argumente [0] = "Test"; Argumente [1] = "test2" -Alert (Argumente [0]); // TestAlert (Argumente [1]); // Test2Alert (SS); // a} Howmanyargs ("a");10. Verwendung von Funktionsparametern
Beim Definieren einer Funktion schreiben wir die verwendeten Parameter in die Klammern der Funktion, aber sie ist unflexibel genug, wenn mehrere optionale Parameter vorhanden sind. Zu diesem Zeitpunkt können wir Objekte verwenden, um mehrere optionale Parameter zu verkapulieren.
Funktion displayInfo (args) {var output = ""; if (typeof args.name == "String") {output + = "name:" + args.name + "/n"; } if (typeof args.age == "number") {output + = "Alter:" args.age + "/n"; } alert (Ausgabe); } displayInfo ({Name: "Nicholas", Alter: 29}); displayInfo ({Name: "Greg"});