Vorwort: Bisher habe ich in meinem Blog einige Artikel über JS und 1. Betrieb von js IntegerDurch die Verwendung von |0 und ~~ können Gleitkommazahlen in Ganzzahlen umgewandelt werden. Die Effizienz ist höher als bei ähnlichen parseInt- und Math.round-Methoden. Dies ist sehr nützlich bei der Verarbeitung von Pixel- und Animationsverschiebungseffekten. Einen Leistungsvergleich finden Sie hier. var foo = (12,4 / 4,13) | 0; // das Ergebnis ist 3 var bar = ~~(12.4 / 4.13); //Das Ergebnis ist 3 Es gibt nämlich noch einen anderen kleinen Trick! ! Mit zwei Ausrufezeichen lässt sich ein Wert schnell in einen Booleschen Wert umwandeln. Testen Sie es! var eee="eee"; Alarm(!!eee) Zurückgegeben wird „true“, d. h. jedem Wert ist ein ! vorangestellt. ! können alle gleich wahr sein. Sofern der Wert nicht ursprünglich ein Boolescher Wert ist oder „undefiniert, null, 0, falsch, NaN“, da 2. Schreiben Sie den nativen Alarm neu und notieren Sie die Anzahl der Popup-Fenster(Funktion() { var alterAlarm = Fenster.Alarm, Anzahl = 0; Fenster.Alarm = Funktion(a) { zählen++; oldAlert(a + "\n Du hast Alert jetzt " + count + " Mal aufgerufen. Hör auf, es ist böse!"); }; })(); alert("Hallo Haorooms"); 3. Methode des digitalen Austauschs ohne Deklaration von ZwischenvariablenUm zwei Zahlen zu vertauschen, besteht unser allgemeiner Ansatz darin, eine Zwischenvariable zu deklarieren, aber der heutige Ansatz ist etwas seltsam. Wir müssen keine Zwischenvariable deklarieren. Sehen wir uns an, wie es implementiert wird! var a=1,b=2;a=[b,b=a][0]; Konsole.log('a:'+a+',b:'+b); //Ausgabe a:2,b:1 Wie wäre es mit dieser Methode? Gibt sie Ihnen nicht ein erfrischendes Gefühl? 4. Alles ist ein Objekt In der Wenn Sie versuchen, Gleichzeitig haben wir festgestellt, dass Zahlen in 5. Variationen von If-Anweisungen Wenn Sie eine if-Anweisung schreiben müssen, möchten Sie vielleicht einen einfacheren Ansatz ausprobieren und stattdessen logische Operatoren in Beispielsweise ruft der obige Code zuerst das heutige Datum ab. Wenn es Sonntag ist, wird ein Popup-Fenster angezeigt, andernfalls wird nichts unternommen. Wir wissen, dass logische Operationen kurzgeschlossen werden können. Bei einem logischen UND-Ausdruck ist das Ergebnis nur dann wahr, wenn beide wahr sind. Wenn die Variable des vorherigen Tages als falsch beurteilt wird, ist das Ergebnis des gesamten UND-Ausdrucks falsch, sodass die nachfolgende Warnung nicht ausgeführt wird. Wenn der vorherige Tag wahr ist, muss der nachfolgende Code weiter ausgeführt werden, um die Wahrheit oder Falschheit des gesamten Ausdrucks zu bestimmen. Dies wird verwendet, um den Effekt von „if“ zu erzielen. Bei herkömmlichen if-Anweisungen sind geschweifte Klammern erforderlich, wenn der Ausführungstext mehr als eine Anweisung umfasst. Mit Kommaausdrücken kann jedoch jeder Code ohne geschweifte Klammern ausgeführt werden. wenn(Bedingung) Alarm(1),Alarm(2),Console.log(3); 6. Verwenden Sie === statt ==Der Operator == (oder !=) führt bei Bedarf automatisch Typkonvertierungen durch. Die Operation === (oder !==) führt keine Konvertierung durch. Es vergleicht sowohl Wert als auch Typ und gilt auch als schneller als ==. [10] === 10 // ist falsch [10] == 10 // ist wahr '10' == 10 // ist wahr '10' === 10 // ist falsch [] == 0 // ist wahr [] === 0 // ist falsch '' == false // ist wahr, aber true == "a" ist falsch '' === false // ist falsch 7. Verwenden von Closures zur Implementierung privater VariablenFunktion Person(Name, Alter) { this.getName = Funktion() { Rückgabename; }; this.setName = Funktion(neuerName) { Name = neuerName; }; this.getAge = Funktion() { return Alter; }; this.setAge = Funktion(neuesAlter) { Alter = neuesAlter; }; //Eigenschaften im Konstruktor nicht initialisiert var occupy; this.getOccupation = Funktion() { Rückkehr Beruf; }; this.setOccupation = Funktion(neueBerufsbezeichnung) { Beruf = neueBelegung; }; } 8. Erstellen Sie einen ObjektkonstruktorFunktion Person(Vorname, Nachname){ this.firstName = Vorname; this.lastName = Nachname; } var Saad = neue Person("Saad", "Mousliki"); 9. Seien Sie vorsichtig mit typeof, instanceof und Konstruktorvar arr = ["a", "b", "c"]; typeof arr; // gibt "Objekt" zurück arr Instanz von Array // wahr arr.konstruktor(); //[] 10. Erstellen Sie eine selbstaufrufende Funktion Dies wird oft Normalerweise ist es wie folgt: (Funktion(){ // privater Code, der automatisch ausgeführt wird })(); (Funktion(a,b){ var Ergebnis = a+b; Ergebnis zurückgeben; })(10,20) 11. Holen Sie sich ein zufälliges Element aus einem Arrayvar items = [12, 548, 'a', 2, 5478, 'foo', 8852, 'Doe', 2145, 119]; var randomItem = items[Math.floor(Math.random() * items.length)]; 12. Holen Sie sich eine Zufallszahl innerhalb eines bestimmten BereichsDieser Codeausschnitt ist nützlich, wenn Sie Testdaten generieren möchten, beispielsweise einen zufälligen Gehaltswert zwischen einem Minimal- und einem Maximalwert. var x = Math.floor(Math.random() * (max - min + 1)) + min; 13. Erzeugen Sie ein digitales Array zwischen 0 und dem eingestellten Maximalwertvar numbersArray = [], max = 100; für (var i = 1; ZahlenArray.push(i++) < max;); // Zahlen = [0,1,2,3 ... 100] 14. Generieren Sie eine zufällige Zeichenfolge alphanumerischer ZeichenFunktion generateRandomAlphaNum(len) { var rdmstring = ""; für( ; rdmString.length < len; rdmString += Math.random().toString(36).substr(2)); return rdmString.substr(0, Länge); } //Methode generateRandomAlphaNum(15) aufrufen; 15. Mischen Sie eine Zahlenreihevar Zahlen = [5, 458, 120, -215, 228, 400, 122205, -85411]; Zahlen = Zahlen.Sortieren(Funktion(){ return Math.random() - 0,5}); /* die Array-Nummern sind beispielsweise gleich [120, 5, 228, -215, 400, 458, -85411, 122205] */ 16. String-TrimmfunktionString.prototype.trim = Funktion () {return this.replace(/^\s+|\s+$/g, "");}; 17. Ein Array an ein anderes Array anhängenvar array1 = [12, "foo", {name: "Joe"}, -2458]; var array2 = ["Damm", 555, 100]; Array.prototype.push.apply(array1, array2); /* Array1 ist gleich [12, "foo", {name "Joe"}, -2458, "Doe", 555, 100] */ 18. Konvertieren Sie das Argumentobjekt in ein Arrayvar argArray = Array.prototype.slice.call(arguments);
19. Überprüfen Sie, ob der Parameter eine Zahl ist Funktion istZahl(n){ 20. Überprüfen Sie, ob der Parameter ein Array istFunktion istArray(Objekt){ gibt Object.prototype.toString.call(obj) === '[Objekt-Array]' zurück; }
Array.isArray(obj); // Dies ist eine neue Array-Methode Wenn Sie nicht mehrere var meinFrame = document.createElement('iframe'); document.body.appendChild(meinFrame); var meinArray = Fenster.Frames[Fenster.Frames.Länge-1].Array; var arr = neues meinArray(a,b,10); // [a,b,10] // instanceof funktioniert nicht richtig, myArray verliert seinen Konstruktor // Der Konstruktor wird nicht zwischen Frames geteilt arr Instanz von Array; // falsch
21. Holen Sie sich den maximalen oder minimalen Wert in einem numerischen Arrayvar Zahlen = [5, 458, 120, -215, 228, 400, 122205, -85411]; var maxInNumbers = Math.max.apply(Math, Zahlen); var minInNumbers = Math.min.apply(Math, Zahlen);
22. Löschen Sie ein Arrayvar meinArray = [12, 222, 1000]; myArray.length = 0; // myArray ist gleich []. 23. Verwenden Sie „delete“ nicht, um Elemente in einem Array zu löschen. Verwenden Sie Verwenden Sie diesen Ansatz nicht: var Elemente = [12, 548, 'a', 2, 5478, 'foo', 8852, 'Doe', 2154, 119]; Elemente.Länge; // return 11 Elemente löschen[3]; // gibt true zurück Elemente.Länge; // return 11 /* Elemente sind gleich [12, 548, „a“, undefiniert × 1, 5478, „foo“, 8852, undefiniert × 1, „Doe“, 2154, 119] */ Und verwenden Sie: var Elemente = [12, 548, 'a', 2, 5478, 'foo', 8852, 'Doe', 2154, 119]; Elemente.Länge; // return 11 Elemente.spleißen(3,1); items.length; // returniere 10 /* Elemente sind gleich [12, 548, "a", 5478, "foo", 8852, undefiniert × 1, "Doe", 2154, 119] */ Die 24. Verwenden Sie die Länge, um ein Array zu kürzen Ähnlich wie wir oben ein Array gelöscht haben, verwenden wir var meinArray = [12, 222, 1000, 124, 98, 10]; myArray.length = 4; // myArray ist gleich [12, 222, 1000, 124]. Wenn Sie außerdem myArray.length = 10; // die neue Arraylänge beträgt 10 meinArray[meinArray.length - 1]; // undefiniert 25. Verwenden Sie logisches UND/ODER, um bedingte Urteile zu treffenDasselbe wie (V), wenn Transformationsanweisung! var foo = 10; foo == 10 && doSomething(); // entspricht if (foo == 10) doSomething(); foo == 5 || doSomething(); // entspricht if (foo != 5) doSomething(); Das logische UND kann auch verwendet werden, um Standardwerte für Funktionsparameter festzulegen. Funktion tuEtwas(arg1){ Arg1 = arg1 || 10; // Wenn arg1 nicht festgelegt ist, wird Arg1 standardmäßig auf 10 gesetzt. } 26. Verwenden Sie die Methode map(), um über die Elemente in einem Array zu iterierenvar Quadrate = [1,2,3,4].map(Funktion (Wert) { gibt Wert *Wert zurück; }); // Quadrate sind gleich [1, 4, 9, 16] 27. Eine Zahl auf N Dezimalstellen rundenVarnum =2,443242342; num = num.toFixed(4); // num ist gleich 2,4432 28. Gleitkommaproblem0,1 + 0,2 === 0,3 // ist falsch 9007199254740992 + 1 // ist gleich 9007199254740992 9007199254740992 + 2 // ist gleich 9007199254740994 Warum passiert das? 0,1 + 0,2 ergibt 0,30000000000000004. Sie sollten wissen, dass alle JavaScript-Zahlen intern als 64-Bit-Binär-Gleitkommazahlen dargestellt werden, die dem IEEE-754-Standard entsprechen. Weitere Informationen finden Sie in diesem Blogbeitrag. Sie können dieses Problem mit den Methoden toFixed() und toPrecision() lösen. 29. Achten Sie beim Durchlaufen der internen Eigenschaften eines Objekts mit for-in darauf, die Eigenschaften zu überprüfenDer folgende Codeausschnitt vermeidet den Zugriff auf Prototypeigenschaften beim Iterieren über die Eigenschaften eines Objekts: für (Var-Name im Objekt) { wenn (Objekt.hatEigeneEigenschaft(Name)) { // mach was mit dem Namen } } 30. Komma-Operatorvar a = 0; var b = ( a++, 99 ); console.log(a); // a ist gleich 1 console.log(b); // b ist gleich 99 31. Cache-Variablen, die eine Berechnung oder Abfrage erfordern Für var navright = document.querySelector('#right'); var navleft = document.querySelector('#left'); var navup = document.querySelector('#up'); var navdown = document.querySelector('#down'); 32. Überprüfen Sie die Parameter, bevor Sie isFinite() aufrufenistFinite(0/0); // falsch isFinite("foo"); // falsch isFinite("10"); // wahr istFinite(10); // wahr isFinite(undifiniert); // falsch isFinite(); // falsch istFinite(null); // wahr !!! 33. Vermeiden Sie negative Indizes in Arraysvar ZahlenArray = [1,2,3,4,5]; var from = numbersArray.indexOf("foo") ; // from ist gleich -1 numbersArray.splice(from,2); // gibt [5] zurück Stellen Sie sicher, dass das Argument beim Aufruf 34. JSON-basierte Serialisierung und Deserialisierung var person = {Name: ‚Saad‘, Alter: 26, Abteilung: {ID: 15, Name: „R&D“} }; var stringFromPerson = JSON.stringify(person); /* stringFromPerson ist gleich "{"name":"Saad","age":26,"department":{"ID":15,"name":"R&D"}}" */ var personFromString = JSON.parse(stringFromPerson); /* personFromString ist gleich dem Personenobjekt */ 35. Vermeiden Sie die Verwendung von eval() und Funktionskonstruktoren Die Verwendung von var func1 = neue Funktion (Funktionscode); var func2 = eval(Funktionscode); 36. Vermeiden Sie die Verwendung von with() Die Verwendung von 37. Vermeiden Sie die Verwendung von for-in zum Durchlaufen eines ArraysVermeiden Sie diesen Ansatz: var Summe = 0; für (var i in arrayNumbers) { Summe += ArrayNumbers[i]; } Besser ist: var Summe = 0; für (var i = 0, len = arrayNumbers.length; i < len; i++) { Summe += ArrayNumbers[i]; } Der zusätzliche Vorteil besteht darin, dass die Werte von i und Ist effizienter als: für (var i = 0; i < arrayNumbers.length; i++) Warum? Weil 38. Übergeben Sie beim Aufruf von setTimeout() und setInterval() eine Funktion statt einer Zeichenfolge. Wenn Sie einen String an Nicht verwenden: setInterval('macheSomethingPeriodically()', 1000); setTimeOut('macheSomethingAfterFiveSeconds()', 5000) Und verwenden Sie: setzeInterval(machePeriodischEtwas, 1000); setzeTimeOut(macheEtwasNachFünfSekunden, 5000); 39. Verwenden Sie Switch/Case-Anweisungen anstelle langer If/Else-Sequenzen Wenn mehr als zwei Situationen zu beurteilen sind, ist die Verwendung 40. Verwenden Sie Switch/Case, wenn Sie den Wertebereich beurteilen In folgender Situation ist die Verwendung Funktion getCategory(Alter) { var Kategorie = ""; Schalter (wahr) { Fall ist NaN (Alter): Kategorie = "kein Alter"; brechen; Fall (Alter >= 50): Kategorie = "Alt"; brechen; Fall (Alter <= 20): Kategorie = "Baby"; brechen; Standard: Kategorie = "Jung"; brechen; }; Rückgabekategorie; } getCategory(5); // gibt "Baby" zurück
41. Geben Sie das Prototypobjekt für das erstellte Objekt anEs ist möglich, eine Funktion zu schreiben, die ein Objekt mit den angegebenen Parametern als Prototyp erstellt: Funktion Klon(Objekt) { Funktion OneShotConstructor(){}; OneShotConstructor.prototype = Objekt; gibt einen neuen OneShotConstructor() zurück; } Klon(Array).Prototyp ; // [] 42. Eine HTML-Escape-Funktion function escapeHTML(text) { var Ersetzungen = {"<": "<", ">": ">","&": "&", "\"": """}; return text.replace(/[<>&"]/g, Funktion(Zeichen) { Ersatz zurückgeben [Zeichen]; }); } 43. Vermeiden Sie die Verwendung von try-catch-finally in Schleifen Zur Laufzeit wird bei jeder Ausführung Vermeiden Sie das Schreiben von: var Objekt = ['foo', 'bar'], i; für (i = 0, Länge = Objektlänge; i < Länge; i++) { versuchen { // etwas tun, das eine Ausnahme auslöst } fangen (e) { // Ausnahme behandeln } } Und verwenden Sie: var Objekt = ['foo', 'bar'], i; versuchen { für (i = 0, Länge = Objektlänge; i < Länge; i++) { // etwas tun, das eine Ausnahme auslöst } } fangen (e) { // Ausnahme behandeln } 44. Legen Sie ein Timeout für XMLHttpRequests fest. Wenn eine XHR-Anforderung lange dauert (beispielsweise aufgrund von Netzwerkproblemen), müssen Sie die Anforderung möglicherweise abbrechen. In diesem Fall können Sie var xhr = neue XMLHttpRequest(); xhr.onreadystatechange = Funktion () { wenn (this.readyState == 4) { Zeitüberschreitung löschen (Zeitüberschreitung); // etwas mit den Antwortdaten tun } } var timeout = setTimeout( Funktion () { xhr.abort(); // Fehler-Callback aufrufen }, 60*1000 /* Timeout nach einer Minute */ ); xhr.open('GET', URL, wahr); xhr.senden(); Außerdem sollten Sie synchrone Ajax-Anfragen grundsätzlich vollständig vermeiden. 45. Umgang mit WebSocket-Timeouts Normalerweise Um Timeout-Probleme zu vermeiden, möchten Sie möglicherweise zeitweise leere Nachrichten an den Server senden. Dazu können Sie Ihrem Code die folgenden beiden Funktionen hinzufügen: eine zum Aufrechterhalten der Verbindung und eine andere zum Abbrechen der Verbindung. Mit dieser Technik können Sie das Timeout-Problem in den Griff bekommen. Verwenden Sie eine Timer-ID: var TimerID = 0; Funktion keepAlive() { var Zeitüberschreitung = 15000; wenn (webSocket.readyState == webSocket.OPEN) { webSocket.send(''); } timerId = setTimeout(keepAlive, Zeitüberschreitung); } Funktion cancelKeepAlive() { wenn (Timer-ID) { Zeitüberschreitung abbrechen(Timer-ID); } }
46. Primitive Operatoren sind immer effizienter als Funktionsaufrufe. Verwenden Sie Verwenden Sie beispielsweise nicht: var min = Math.min(a,b); A. drücken(v); Und verwenden Sie: var min = a < b ? ab; A[A.Länge] = v; 47. Wählen Sie zufällig einen Wert aus der GanzzahlEs gibt eine sehr nützliche Formel, die es uns ermöglicht, bestimmte berühmte Zitate oder Nachrichtenereignisse zufällig anzuzeigen! Wert Bitte merken Sie sich die obige Formel! ~ 48. Nach der Zeitformatierung fehlen den führenden Ziffern NullenEs gibt viele Möglichkeiten, damit umzugehen, aber die folgende Methode ist einfacher und effektiver, also notieren Sie sie! Funktion paddingLeftZero(str){ return ("00"+str).substr(str.länge); } 49. js setzt CookiesgetCookie: Funktion (Name) { var arr, reg = neuer RegExp("(^| )" + name + "=([^;]*)(;|$)"); wenn (arr = document.cookie.match(reg)) Rückgabewert: unescape(arr[2]); anders gibt null zurück; }, setCookie: Funktion (Name, Wert, Tage) { var exp = neues Datum(); exp.setTime(exp.getTime() + Tage * 24 * 60 * 60 * 1000); document.cookie = Name + "=" + escape(Wert) + ";expires=" + exp.toGMTString(); }, 49. js ermittelt die Uhrzeit an diesem Tag um 24 Uhrneues Datum(neues Datum(neues Datum().toLocaleDateString()).getTime()+24*60*60*1000); Ebenso 0 Uhr Zeit neues Datum(neues Datum(neues Datum().toLocaleDateString()).getTime()); Damit ist der Artikel mit 49 praktischen Tipps zu JavaScript abgeschlossen. Weitere relevante Inhalte zu praktischen JavaScript-Tipps finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Detaillierte Methode zur Verwendung von GoAccess zum Analysieren von Nginx-Protokollen
>>: Mit CSS3 3D-Effekten einen Würfel erstellen
Inhaltsverzeichnis 1 Node.js-Methode zum Senden v...
Wirkung html <Text> <div Klasse="In...
Inhaltsverzeichnis Vorwort 1. Anwendungskomponent...
In letzter Zeit gibt es eine besonders ungewöhnli...
Inhaltsverzeichnis 1. Zugeordnete Typen 2. Mappin...
Inhaltsverzeichnis 1. Art von 2. Instanz von 3. U...
Vorwort In Datenbanken wie Oracle und SQL Server ...
Bei der Verwendung von Nginx als Webserver sind m...
In diesem Artikelbeispiel wird der spezifische Co...
Inhaltsverzeichnis 1. Bootstrap5-Haltepunkte 1.1 ...
Kürzlich wurden zwei Konten auf dem Server gehack...
1. Jede Funktion ist ein Objekt und belegt Speich...
Vorwort Die MySQL Master-Slave-Replikation ist di...
Vom Einsteiger bis zum Neueinsteiger ist das Linu...
VMWare (Virtual Machine Ware) ist ein Softwareunt...