JavaScript selbst kann als einfache Sprache angesehen werden, aber wir verbessern sie ständig mit Weisheit und flexiblen Mustern. Gestern haben wir diese Muster auf das JavaScript -Framework angewendet, und heute führen diese Frameworks unsere Webanwendungen wieder vor. Viele Anfängerentwickler werden von verschiedenen leistungsstarken JavaScript -Frameworks angezogen, ignorieren jedoch die praktischen JavaScript -Fähigkeiten, die hinter dem Rahmen enorm und riesig sind. In diesem Artikel werden Sie eine umfassende Einführung in die Wissenspunkte erhalten.
1. Betrieb von JS -Ganzzahlen
Verwenden Sie | 0 und ~~, um den schwimmenden Punkt in Ganzzahlen umzuwandeln, und ist schneller als ähnliche Parsen und Mathematik. Dies ist der Leistungsvergleich.
var foo = (12,4 / 4.13) | 0; // Das Ergebnis ist 3Var -Balken = ~~ (12,4/4.13); // Das Ergebnis ist 3
Ein weiterer kleiner Trick ist! ! 2 Ausrufezeichen, Sie können über einen Wert sprechen und ihn schnell in einen booleschen Wert umwandeln. Sie können es testen!
var eee = "eee"; alert (!! eee)
Die Rendite ist wahr, was bedeutet, dass jedem Wert ihr vorangestellt ist! ! Alle können gleich sein. Es sei denn, dieser Wert ist ursprünglich ein boolescher Wert oder ist undefiniert, Null, 0, Falsch, Nan, '', weil die undefinierten Null, 0, falsch, nan, "erwähnt, sind diese ursprünglich falsch, also werden zwei hinzugefügt! ! Danach ist es immer noch Fasle.
2. Schreiben Sie den nativen Alarm neu und zeichnen Sie die Anzahl der Popup-Boxen auf
(function () {var oldalert = fenster.alert, count = 0; window.alert = Funktion (a) {count ++; oldalert (a + "/n Sie haben alert" + count + "times. Hören Sie.3.. Methoden des digitalen Austauschs deklarieren keine Zwischenvariablen
Beim Austausch von zwei Zahlen besteht unser allgemeiner Ansatz darin, eine Zwischenvariable zu deklarieren, aber der heutige Ansatz ist ziemlich seltsam. Sie müssen keine Zwischenvariable deklarieren und sehen, wie sie implementiert wird!
var a = 1, b = 2; a = [b, b = a] [0]; console.log ('a:'+a+', b:'+b); // Ausgabe A: 2, B: 1Wie wäre es damit, hat diese Methode ein neues Gefühl?
4. Alles ist ein Objekt
In der Welt von JavaScript ist alles ein Objekt. Zusätzlich zu Null und Undefined haben andere grundlegende Arten von Zahlen, Saiten und Booleschen entsprechende Wrapper -Objekte. Eine Funktion eines Objekts ist, dass Sie Methoden direkt darauf aufrufen können.
Bei numerischen Basistypen fällt es fehl, wenn Sie versuchen, die Tastring -Methode darauf aufzurufen, aber es wird nicht fehlschlagen, nachdem sie in Klammern eingeschlossen und dann angerufen wurde. Die interne Implementierung besteht darin, den Basistyp in ein Objekt mit dem entsprechenden Wrapper -Objekt umzuwandeln. Also (1) .ToString () entspricht der neuen Zahl (1) .ToString (). Daher können Sie in der Tat grundlegende Arten von Zahlen, Zeichenfolgen, Booleäern usw. als Objekte verwenden. Achten Sie nur darauf, dass die Syntax angemessen ist.
Gleichzeitig bemerkten wir, dass die Zahlen in JavaScript nicht in schwimmende Punkte und Formen unterteilt sind. Alle Zahlen sind tatsächlich schwimmende Punkttypen, die nur den Dezimalpunkt weglassen. Zum Beispiel kann der 1, den Sie sehen, als 1. 1. Aus diesem Grund wird ein Fehler gemeldet, wenn Sie versuchen, 1. toString () zu schreiben. Daher sollte die richtige Art und Weise wie folgt sein: 1..ToString () oder Klammern wie oben erwähnt. Der Zweck von Klammern besteht darin, den JS -Parser zu korrigieren und den Punkt nach 1 nicht als Dezimalpunkt zu betrachten. Die interne Implementierung wird wie oben erwähnt und konvertiert 1. in ein Objekt mit einem Wrapper -Objekt und dann die Methode.
5. Deformation von if Statement
Wenn Sie eine IF -Anweisung schreiben müssen, versuchen Sie stattdessen eine andere einfachere Methode mit logischen Operatoren in JavaScript.
var day = (neues Datum) .Getay () === 0; // traditionelle Anweisung if (tag) {alert ('Heute ist Sonntag!');}; // Logik verwenden und ifday && alarm ('Heute ist Sonntag!');Zum Beispiel erhält der obige Code das heutige Datum, wenn es am Sonntag ist, Pop-up-Fenster, sonst wird nichts getan. Wir wissen, dass es einen Kurzschluss in logischen Operationen gibt. Für Logik und Ausdrücke kann das Ergebnis nur dann wahr sein. Wenn die Variable der Vortagsvariable als falsch beurteilt wird, ist das Ergebnis für den gesamten Ausdruck falsch, sodass der nachfolgende Alarm nicht fortgesetzt wird. Wenn der vorherige Tag wahr ist, muss der nachfolgende Code weiterhin den folgenden Code ausführen, um die Authentizität des gesamten Ausdrucks zu bestimmen. Unter Verwendung dieses Punktes wird der Effekt von IF erreicht.
Für traditionelle wenn Aussagen, wenn der Ausführungskörpercode 1 Anweisung überschreitet, sind lockige Klammern erforderlich, und die Verwendung von Comma -Ausdrücken kann jeder Code -Balken ohne lockige Klammern ausgeführt werden.
if (conditoin) alarm (1), alarm (2), trsole.log (3);
6. Verwendung ===, nicht ==
Der Operator == (oder! =) Führt bei Bedarf automatisch Typkonvertierung durch. Die Operation === (oder! ==) führt keine Konvertierung durch. Es wird Werte und Typen vergleichen und gilt auch als besser als == in Bezug auf die Geschwindigkeit.
[10] === 10 // ist falsch [10] == 10 // IS true'10 '== 10 // IS true'10' == 10 // ist falsch [] == 0 // ist wahr [] === 0 // ist falsch ''
7. Verwenden Sie Schließungen, um private Variablen zu implementieren
Funktionsperson (Name, Alter) {this.getName = function () {return name; }; this.setName = function (newname) {name = newName; }; this.getage = function () {return ay; }; this.setage = function (newage) {ay = newage; }; // Attribute, die in der Konstruktor -VAR -Besetzung nicht initialisiert werden; this.getoccupation = function () {return occupation; }; this.setoccupation = function (newocc) {occupation = newocc; };}8. Erstellen Sie einen Objektkonstruktor
Funktionsperson (FirstName, LastName) {this.firstname = firstName; this.lastName = lastname;} var saad = new Person ("saad", "musliki");9. Achten Sie darauf, Typen, Instanz und Konstruktor zu verwenden
var arr = ["a", "b", "c"]; typeof arr; // "Object" arr Instance von Array zurückgeben // truearr.constructor (); // []
10. Erstellen Sie eine Selbstberechtigungsfunktion
Dies wird oft als selbstverwiderte anonyme Funktion oder eine sofortige Aufruffunktion ausgezeichnet. Dies ist eine Funktion, die automatisch nach der Erstellung automatisch ausgeführt wird, normalerweise wie folgt:
(function () {// ein privater Code, der automatisch ausgeführt wird}) (); (Funktion (a, b) {var result = a+b; Rückgabeergebnis;}) (10,20)11. Holen Sie sich einen zufälligen Element aus dem Array
var items = [12, 548, 'a', 2, 5478, 'foo', 8852, 'doe', 2145, 119]; var randomItem = items [math.floor (math.random () * items.Length)];
12. Erhalten Sie eine Zufallszahl innerhalb eines bestimmten Bereichs
Dieser Ausschnitt ist sehr nützlich, wenn Sie Testdaten generieren möchten, z. B. einen zufälligen Gehaltswert zwischen den minimalen und maximalen Werten.
var x = math.floor (math.random () * (max - min + 1)) + min;
13. Generieren Sie eine Reihe von Zahlen zwischen 0 und dem Maximalwert fest
var numnernArray = [], max = 100; für (var i = 1; numberArray.push (i ++) <max;); // nummern = [0,1,2,3 ... 100]
14. Generieren Sie eine alphabetische Zeichenfolge für Zufallszahl
Funktionengenaterandomalphanum (len) {var rdmstring = ""; für (; rdmstring.length <len; rdmstring += math.random (). tostring (36) .substr (2)); return rdmstring.substr (0, len);} // Aufrufen Sie das Methodengeneraterandomalphanum (15);Fünfzehn. Eine Reihe von Zahlen krabbeln
var numbers = [5, 458 , 120 , -215 , 228 , 400 , 122205, -85411];numbers = numbers.sort(function(){ return Math.random() - 0.5});/* the array numbers will be equal for example to [120, 5, 228, -215, 400, 458, -85411, 122205] */16. String -Trimmfunktion
String.Prototype.trim = function () {return this.replace (/^/s+|/s+$/g, "");};17. Anhängen (anhängen) ein Array an ein anderes Array
var array1 = [12 , "foo" , {name: "Joe"} , -2458];var array2 = ["Doe" , 555 , 100];Array.prototype.push.apply(array1, array2);/* array1 will be equal to [12 , "foo" , {name "Joe"} , -2458 , "Doe" , 555 , 100] */18. Konvertieren Sie Argumenteobjekte in ein Array
var argarray = array.prototype.lice.call (Argumente); [Anmerkung des Übersetzers: Das Argumenteobjekt ist ein Array -Objekt der Klasse, aber kein echtes Array]
19. Überprüfen Sie, ob die Parameter Zahlen sind (Nummer)
Funktion isNumber (n) {return! isnan (parsefloat (n)) && isfinite (n);}20. Überprüfen Sie, ob die Parameter Arrays sind
Funktion isArray (obj) {return object.prototype.toString.call (obj) === '[Objektarray]';}Hinweis: Wenn die Methode toString () überschrieben ist, erhalten Sie mit dieser Technik nicht das gewünschte Ergebnis. Oder Sie können verwenden:
Array.isArray (obj); // Dies ist eine Neuarray -Methode
Wenn Sie nicht mehrere Frames verwenden, können Sie auch die Instanzmethode verwenden. Wenn Sie jedoch mehrere Kontexte haben, erhalten Sie das falsche Ergebnis.
var myframe = document.createelement ('iframe'); document.body.AppendChild (MyFrame); var myarray = window.frames [window.frames.length-1] .Array; var arr = new myArray (a, b, 10); // [a, b, 10] // Instanz von wird nicht richtig funktioniert, Myarray verliert seinen Konstruktor // Konstruktor wird nicht zwischen Framesarrin -Instanz von Array geteilt. // FALSCH[Anmerkung des Übersetzers: Es gibt viele Diskussionen darüber, wie Arrays im Internet beurteilt werden. Sie können sie googeln. Dieser Artikel ist ausführlich geschrieben. 】
21. Erhalten Sie den maximalen oder minimalen Wert in einer Reihe von Zahlen
VAR -Zahlen = [5, 458, 120, -215, 228, 400, 122205, -85411];
var maxinnumbers = math.max.Apply (Math, Zahlen);
var mininnumbers = math.min.apply (Math, Zahlen);
[Anmerkung des Übersetzers: Hier finden Sie eine Fähigkeit zum Übergeben von Parametern mithilfe der Funktion.Prototype.Apply -Methode]
22. Ein Array löschen
var myarray = [12, 222, 1000]; myarray.length = 0; // myarray wird gleich [] sein.
23. Verwenden Sie keine Löschung, um Elemente in einem Array zu löschen.
Verwenden Sie Splice anstatt zu löschen, um ein Element im Array zu löschen. Mit Löschen ersetzt das Originalelement nur durch undefined, löscht es nicht wirklich aus dem Array.
Verwenden Sie diese Methode nicht:
var items = [12, 548, 'a', 2, 5478, 'foo', 8852, 'doe', 2154, 119]; Elemente.Length; // 11Delete -Elemente zurückgeben [3]; // Return truitems.length; // Return 11/ * Elemente sind gleich [12, 548, "A", undefined × 1, 5478, "Foo", 8852, undefined × 1, "Doe", 2154, 119] */
Und verwenden:
var items = [12, 548, 'a', 2, 5478, 'foo', 8852, 'doe', 2154, 119]; Elemente.Length; // return 11Items.SPLICE (3,1); items.Length; // Return 10/ * Elemente sind gleich [12, 548, "A", 5478, "Foo", 8852, undefined × 1, "Doe", 2154, 119] */
Die Löschmethode sollte verwendet werden, um die Eigenschaft eines Objekts zu löschen.
24. Verwenden Sie die Länge, um ein Array abzuschneiden
Ähnlich wie die oben genannte Art und Weise verwenden wir das Längenattribut, um ein Array abzuschneiden.
var myarray = [12, 222, 1000, 124, 98, 10]; myarray.length = 4; // myarray ist gleich [12, 222, 1000, 124].
Wenn Sie die Länge eines Arrays auf einen größeren Wert als die aktuelle festlegen, wird die Länge des Arrays geändert und ein neues undefiniertes Element hinzugefügt, um es zu füllen. Die Länge des Arrays ist keine schreibgeschützte Eigenschaft.
myarray.length = 10; // Die Neuarraylänge beträgt 10myArray [myarray.length - 1]; // undefiniert
25. Verwenden Sie logische und/oder um bedingte Urteile zu fällen
Gleich (fünf), wenn Verformungsaussage!
var foo = 10; foo == 10 && dosomething (); // ist gleichwertig zu if (foo == 10) dosomething (); foo == 5 || dosometing (); // entspricht if (foo! = 5) doomething ();
Logisch und kann auch verwendet werden, um Standardwerte für Funktionsparameter festzulegen
Funktion dosomething (arg1) {arg1 = arg1 || 10; // Wenn Arg1 nicht festgelegt ist, wird Arg1 standardmäßig auf 10 gesetzt}26. Verwenden Sie die MAP () -Methode, um Elemente in einem Array zu durchqueren
var squares = [1,2,3,4] .MAP (Funktion (val) {return val * val;}); // Quadrate sind gleich [1, 4, 9, 16]27. Rund um eine Nummer und behalten Sie n Dezimalstellen bei
var num = 2,443242342; num = num.tofixed (4); // num ist gleich 2,4432
28. Problem mit schwebender Punktzahl
0,1 + 0,2 === 0,3 // IS False9007199254740992 + 1 // entspricht 90071992547409929007199254740992 + 2 // entspricht 9007199254740994
Warum passiert das? 0,1+0,2 entsprechen 0,3000000000000000000004. Sie sollten wissen, dass alle JavaScript-Nummern intern schwimmende Punktzahlen sind, die in 64-Bit-Binärdateien ausgedrückt werden und dem IEEE 754-Standard einhalten. Für weitere Informationen können Sie diesen Blog -Beitrag lesen. Sie können tofixed () und topRecision () -Methoden verwenden, um dieses Problem zu lösen.
29. Wenn Sie die internen Eigenschaften eines Objekts verwenden, überprüfen Sie bitte die Eigenschaften.
Der folgende Code -Snippet kann den Zugriff auf die Eigenschaften des Prototyps beim Durchqueren einer Objekteigenschaft vermeiden.
für (var name in Object) {if (Object.hasownProperty (Name)) {// etwas mit Name}} machenDreißig, Komma -Betreiber
var a = 0; var b = (a ++, 99); Konsole.log (a); // a ist gleich 1console.log (b); // b ist gleich 99
31. Cache -Variablen, die berechnet und abfragt werden müssen (Berechnung oder Abfrage)
Für JQuery -Selektoren sollten wir diese DOM -Elemente besser zwischenspeichern.
var navright = document.querySelector ('#rechts'); var navleft = document.querySelector ('#links'); var navup = document.querySelector ('#up'); var navdown = document.querySelector ('#Down');32. Überprüfen Sie die Parameter, bevor Sie isFinite () aufrufen
isfinite (0/0); // falsefinite ("foo"); // falsefinite ("10"); // truisfinite (10); // truisfinite (undfiniert); // falseisfinite (); // Falseisfinite (NULL); // WAHR !!!33. Vermeiden Sie negative Indizes in Arrays
var numnernArray = [1,2,3,4,5]; var von = numberArray.Indexof ("foo"); // von ist gleich -1numbersArray.splice (von, 2); // wird zurückkehren [5]Stellen Sie sicher, dass die Parameter beim Aufrufen von Index von nicht negativ sind.
34. Serialisierung und Deserialisierung basierend auf JSON
var person = {name :'Saad', age : 26, department : {ID : 15, name : "R&D"} };var stringFromPerson = JSON.stringify(person);/* stringFromPerson is equal to "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" */var personFromString = Json.Parse (StringFromperson);/ * PersonfromString ist gleich dem Personobjekt */gleich35. Vermeiden Sie die Verwendung von Eval () und Funktionskonstruktoren
Die Verwendung von Eval- und Funktionskonstruktoren ist sehr teuer, da jedes Mal, wenn sie die Skript -Engine aufrufen, um den Quellcode in ausführbare Code umzuwandeln.
var func1 = neue Funktion (Funktionscode); var func2 = eval (functionCode);
36. Vermeiden Sie die Verwendung mit ()
Verwendung mit () fügt eine globale Variable ein. Daher werden Variablen mit demselben Namen überschrieben und verursachen unnötige Schwierigkeiten.
37. Vermeiden Sie es, ein Array zu verwenden, um ein Array zu durchqueren
Vermeiden Sie diese Methode: diese Methode:
var sum = 0; für (var i in arrayNumbers) {sum += arrayNumbers [i];}Ein besserer Weg ist:
var sum = 0; für (var i = 0, len = arrayNumbers.length; i <len; i ++) {sum+= arrayNumbers [i];}Der zusätzliche Nutzen besteht darin, dass die Werte von I- und Len -Variablen nur einmal ausgeführt werden, was effizienter ist als die folgende Methode:
für (var i = 0; i <arrayNumbers.length; i ++)
Warum? Weil ArrayNumbers.Length jedes Mal berechnet wird, wenn die Schleife geschoben wird.
38. Übergeben Sie die Funktion anstelle einer String beim Aufrufen von setTimeout () und setInterval ().
Wenn Sie eine Zeichenfolge an setTimeout () oder setInterval () übergeben, wird die Zeichenfolge so analysiert, als ob sie mit eval verwendet würde, was sehr zeitaufwändig ist.
Verwenden Sie nicht:
setInterval ('dosomethingperiodical ()', 1000); setTimeout ('dosomethingAfterfiveSeconds ()', 5000)Und verwenden:
setInterval (dosomethingperiodisch 1000); setTimeout (dosomethingAfterfiveseconds, 5000);
39. Verwenden Sie Switch/Case -Anweisungen anstelle einer langen Liste von if/else
Bei der Beurteilung, dass die Situation größer als 2 ist, ist die Verwendung von Switch/Fall effizienter und eleganter (einfacher zu organisieren). Verwenden Sie jedoch keinen Schalter/Fall, wenn mehr als 10 Urteile vorhanden sind.
40. Verwenden Sie Switch/Fall bei der Beurteilung des numerischen Bereichs
In der folgenden Situation ist es vernünftig, Switch/Fall zu verwenden, um den numerischen Bereich zu bestimmen:
Funktion getCategory (Alter) {var category = ""; Switch (true) {case isnan (Alter): category = "kein Alter"; brechen; Fall (Alter> = 50): category = "alt"; brechen; Fall (Alter <= 20): category = "baby"; brechen; Standard: category = "jung"; brechen; }; Rückgabekategorie;} getCategory (5); // wird "Baby" zurückkehren "[Anmerkung des Übersetzers: Im Allgemeinen ist es geeigneter, den numerischen Bereich zu beurteilen. Switch/Fall eignet sich besser für die Ermittlung des Werts.
41. Geben Sie ein Prototypobjekt für das erstellte Objekt an
Es ist möglich, eine Funktion zu schreiben, um ein Objekt zu erstellen, das Parameter als Prototyp angibt:
Funktionsklone (Objekt) {Funktion neNShotConstructor () {}; OneshotConstructor.Prototype = Objekt; return New OneShotConstructor ();} Clone (Array) .Prototyp; // []42. Eine HTML -Escape -Funktion
Function EscapeHtml (Text) {var Ersatz = {"<": "<", ">": ">", "&": "&", "/" ":" ""}; text zurückgeben43. Vermeiden Sie die Verwendung von Try-Catch-final in einer Schleife
Zur Laufzeit wird jedes Mal, wenn die Fangklausel ausgeführt wird, dem erfassten Ausnahmebobjekt einer Variablen zugeordnet, und in der Try-Catch-final-Struktur wird diese Variable jedes Mal erstellt.
Vermeiden Sie es, so zu schreiben:
var Object = ['foo', 'bar'], i; für (i = 0, len = Object.Length; i <len; i ++) {try {// etwas tue etwas, das eine Ausnahme auswirft} catch (e) {// Handlungsausnahme}}}}}}}}}}}}}}}}}}}}}}}}}Und verwenden:
var Object = ['foo', 'bar'], i; try {for (i = 0, len = Object.length; i <len; i ++) {// etwas tue etwas, das eine Ausnahme auswirft}} catch (e) {// Ausnahme} handeln}44. Stellen Sie eine Zeitüberschreitung für XMLHTTPREquests fest.
Nachdem eine XHR -Anfrage lange Zeit (z. B. aufgrund von Netzwerkproblemen) in Anspruch nimmt, müssen Sie die Anfrage möglicherweise abbrechen, damit Sie SetTimeOut () für den XHR -Anruf verwenden können.
var xhr = new xmlhttpRequest (); xhr.onReadyStatechange = function () {if (this.ReadyState == 4) {ClearTimeOut (Timeout); // etwas mit Antwortdaten}} var timeout = setTimeout (function () {xhr.abort (); // Aufruffehlerrückruf}, 60*1000/*Timeout nach einer Minute*/); xhr.open ('get', url, true); xhr.send ();Darüber hinaus sollten Sie im Allgemeinen synchronisierte AJAX -Anfragen insgesamt vermeiden.
Fünfundvierzig. Verwandte Timeout von Websocket
Normalerweise wird der Server nach Erstellen einer WebSocket -Verbindung Ihre Verbindung nach 30 Sekunden (Time Out) nach 30 Sekunden trennen. Die Firewall wird auch nach einer Zeit der Inaktivität getrennt.
Um Zeitlimitprobleme zu vermeiden, müssen Sie möglicherweise leere Nachrichten zeitweise an die Serverseite senden. Dazu können Sie die folgenden zwei Funktionen in Ihren Code hinzufügen: einen, um die Verbindung und den anderen zu behalten, um die Verbindung zu unternehmen. Mit diesem Trick können Sie das Timeout -Problem steuern.
Verwenden Sie eine Timerid:
var TimerID = 0; Funktion keepalive () {var timeout = 15000; if (WebSocket.ReadyState == WebSocket.open) {WebSocket.Send (''); } TimerID = setTimeout (keepalive, timeout);} Funktion covRingKeePalive () {if (timerId) {canceltimeout (TimerID); }}Die Methode keepalive () sollte am Ende der Onopen () -Methode der WebSocket -Verbindung hinzugefügt werden, und am Ende der OnCLOSE () -Methode wird CancerKeePalive () hinzugefügt.
46. Denken Sie daran, dass die ursprünglichen Operatoren immer effizienter sind als Funktionsaufrufe. Verwenden Sie Vanillejs.
Verwenden Sie beispielsweise nicht:
var min = math.min (a, b); a.push (v);
Und verwenden:
var min = a <b? AB; a [a.länge] = v;
47. Wählen Sie aus Ganzzahlen zufällig einen Wert aus
Es gibt die folgende Formel, die sehr nützlich ist und es uns ermöglicht, bestimmte berühmte Zitate oder Nachrichtenereignisse zufällig anzuzeigen!
Value = math.floor (math.random () *Gesamtzahl der möglichen Werte+ Erster möglicher Wert)
Zum Beispiel: Um einen Wert zwischen 2 und 10 auszuwählen, können wir ihn so schreiben
var num = math.floor (math.random ()*9+2)
Bitte denken Sie an die obige Formel! ~
Die Verwendung und Funktion der einzelnen vertikalen Balken des JS -Operators "|" und die Verarbeitung von JS -Daten
Im Moment ist es im Betrieb von JS -Ganzzahlen gleichbedeutend mit der Entfernung des Dezimalpunkts, Parseint. Wenn eine positive Zahl math.floor () entspricht und wenn eine negative Zahl Mathematik entspricht. Ceil () Hinweis:
1. Math.ceil () wird als Aufwärtsrundung verwendet. 2. Math.floor () wird als rund nach unten verwendet. 3. Math.Round () Round (), die häufig in Mathematik verwendet werden. console.log (0.6 | 0) // 0console.log (1.1 | 0) // 1console.log (3.65555 | 0) // 3console.log (5.99999 | 0) // 5console.log (-7.777 | 0) //-7
Hinweis: Zusätzlich zu den drei Methoden der Mathematik, um Nummern zu verarbeiten, verwenden wir häufig ParseInt (), Parsefloat (), tofixed () und toprecision () usw. Eine kurze Erklärung:
Die Verwendung der tofixierten Methode ist wie folgt:
100.456001.Tofixed (2); //100.47100.456001.Tofixed(3); //100.456number.prototype.tofixed.call(100.456001,2); //100.47
Nachteile: Nach dem Gebrauch wird es eine Zeichenfolge.
Die Nutzung von Toprezisionen ist wie folgt:
99.456001.Toprecision (5); //99.456100.456001.Toprecision(5); //100.46number.prototype.toprecision.call(10.456001,5); //10.456
Betriebsregeln für einzelne vertikale Balken
Nachdem wir uns das obige Beispiel angesehen haben, wissen wir im Allgemeinen, dass ein einzelner vertikaler Balken einen Rundungsvorgang durchführen kann, was bedeutet, dass nur der positive Teil beibehalten und der Dezimalteil entfernt wird. Wie wird jedoch "| 0" berechnet? Warum kann "| 0" den Zweck der Runden erreichen? Was wird die einzelne vertikale Balken sein, wenn er nicht 0 ist?
Schauen wir uns unter Berücksichtigung dieser Fragen das folgende Beispiel an:
console.log (3 | 4); //7console.log(4|4); //4console.log(8|3); //11console.log(5.3|4.1); //5console.log(9|3455); // 3455
Es scheint, dass es kein Muster gibt zu finden? Online suchen. http://tools.vevb.com/table/priority
Dies erwähnt eine einzelne vertikale Balken "" | " Aber es gibt keinen JavaScript.
Ok, ich werde die Antwort hier ankündigen. Tatsächlich die einzelne vertikale Balken "" | " ist das Ergebnis, das durch Konvertieren in ein 2-stelliges System erzielt wird. Nehmen wir zum Beispiel ein einfaches Beispiel:
3 | 4 wird in binär umgewandelt und 011 | 100 Addition gibt an.
Und so weiter liste ich sie hier nacheinander nicht auf. Die einzelne vertikale Balken "|" Der Betrieb ist das Ergebnis, das durch Konvertieren in ein 2-stelliges System erhalten wird! Hast du alles gelernt?