In diesem Artikel wird hauptsächlich die auf Rekursion basierende JS-Methode zur Implementierung der Webversion des Rechners vorgestellt. Er analysiert die Schritte und zugehörigen Betriebstechniken zur Verwendung des rekursiven Algorithmus in JavaScript zur Implementierung der Webversion des Rechners Beispiele. Freunde in Not können sich darauf beziehen
Das Beispiel in diesem Artikel beschreibt die Methode zur Implementierung der Webversion des Rechners basierend auf JS-Rekursion. Teilen Sie es als Referenz mit allen:
Die rekursive Implementierung der Webversion des Rechners kann die Designideen vereinfachen:
1 implementiert das Erscheinungsbild des Taschenrechners und gibt jedem die Schaltfläche, die an das Ereignis Zahl (z) gebunden ist, und die Differenz in z wird übergeben, um die Schaltfläche zu unterscheiden, die das Ereignis ausgelöst hat.
Dieses p wird in den Textkörper eingefügt, der den HTML-Code des Rechners darstellt. Number() unterscheidet die Auslöseschaltflächen durch die Übergabe verschiedene Zahlen.
<p class="bg"> <p id="txt"></p> <button id="bt10" value="+">+</button> <button id="bt11" value="-">-</button> <button id="bt12" value="*">*</button> <br data-filtered="filtered"><button id="bt13" value="/">/</button> <button id="bt14" value="=">=</button> <br data-filtered="filtered"><button id="bt1" value="1">1</button> <button id="bt2" value="2">2</button> <button id="bt3" value="3">3</button> <br data-filtered="filtered"><button id="bt4" value="4">4</button> <button id="bt5" value="5">5</button> <button id="bt6" value="6">6</button> <br data-filtered="filtered"><button id="bt7" value="7">7</button> <button id="bt8" value="8">8</button> <button id="bt9" value="9">9</button> </p>
2. In der Methode number(z) wird das innerHTML des DOM verwendet, um die Echtzeitanzeige des Ausdrucks zu realisieren, und der String-Inhalt wird zum Speichern der angeklickten Zahl oder verwendet Wenn auf „=" geklickt wird, wird der zu berechnende Fakt (Inhalt) aufgerufen.
Der Code lautet wie folgt:
var content; //存储已点击的数字或符号,要定义成全局的,如果定义在number()中,每次content都会被重新赋值 function number(z) { var k=document.getElementById("txt");//获取显示框的 DOM,并缓存在k中 if(z==14){//如果点击了"="号 var sum = fact(content);//调用fact()进行计算,并把结果赋值给sum content=content+"="+sum;//在要显示的内容后加入"="和sum k.innerHTML = content; content = null;//将content清空,准备下次计算 }else{ //如果没有点击"="号,而是点击的运算符,就需要通过switch把数字转化成运算符 switch(z){ case 10: z = '+'; break; case 11: z = '-'; break; case 12: z = '*'; break; case 13: z = '/'; break; } //把此时输入的字符存入content if(content){ content+=z.toString(); }else{ content=z.toString(); } k.innerHTML = content;//让它实时显示 } }
3. Die Idee des rekursiven Algorithmus in diesem Rechner: In fact(content)
verwenden Sie zuerst content.indexOf("+")
, um zu beurteilen, ob das Zeichen „+“ vorhanden ist. Wenn es existiert, rufen Sie rekursiv die beiden Zeichenfolgen vor und nach dem Index auf und addieren Sie sie, bis „+“ nicht mehr in allen Zeichenfolgen gefunden wird. Verwenden Sie dann content.lastIndexOf("-")
, um das „-“ zu beurteilen. Die nachfolgende Operation ist die gleiche wie beim Pluszeichen. Rekursieren Sie die beiden Zeichenfolgen vor und nach dem Index und subtrahieren Sie sie, bis das Minuszeichen nicht mehr gefunden werden kann Hier gibt es kein Vorzeichen und keine Rückgabe parseFloat(content)
Der Inhalt ist die vorzeichenlose Zeichenfolge nach dem rekursiven Aufruf, nicht der am Anfang eingeführte Parameter.
//实现递归计算 function fact(content){ var index = content.indexOf("+");//获取"+"号的index if(index != -1){ return fact(content.substring(0,index))+fact(content.substring(index+1)); //当找得到“+”号时,分成两部分相加递归 }else{ var index2 = content.lastIndexOf("-");//当找不到“+”号时,开始找“-”号 if(index2 != -1){ return fact(content.substring(0,index2))-fact(content.substring(index2+1)); //当找得到“-”号时,分成两部分相减递归 }else{ var index3 = content.indexOf("*");//当找不到“-”号时,开始找“*”号 if(index3 != -1){ return fact(content.substring(0,index3))*fact(content.substring(index3+1)); //当找得到“*”号时,分成两部分相乘递归 }else{ var index4 = content.lastIndexOf("/");//当找不到“*”号时,开始找“/”号 if(index4 != -1){ return fact(content.substring(0,index4))/fact(content.substring(index4+1)); //当找得到“/”号时,分成两部分相除递归 }else{ return parseFloat(content);//当找不到“/”号时,返回这段串的变成float型的数值 } } } } }
Das Obige ist der gesamte Code, auf den Sie bei der Designidee achten sollten:
1. Das Pluszeichen und das Multiplikationszeichen verwenden indexOf()
, während das Minuszeichen und Divisionszeichen verwenden lastIndexOf()
.
Zum Beispiel: content="3-2-1"
Wenn Sie indexOf()
verwenden, teilen Sie die Zeichenfolge zunächst in fact("3")-fact("2 -1"), die erste „3" ist ohne Vorzeichen. Beim rekursiven Aufruf von fact wird parseFloat("3") zurückgegeben, und wenn der nachfolgende rekursive Aufruf erfolgt, wird daraus parseFloat("2 ")-parseFloat("1")=1, dies ist der Rückgabewert von fact("2-1"), das Endergebnis ist 2, was äquivalent ist zu: 3-(2- 1).
Wenn lastIndexOf() verwendet wird, unterteilt es die Zeichenfolge in fact("3-2")-fact("1"), fact("3-2" ) ist parseFloat("3")-parseFloat("2")=1, wodurch die Berechnung von links nach rechts realisiert wird.
Das Gleiche gilt für das Divisionszeichen: Wenn content="6/3/2" indexOf() verwendet, entspricht es: 6/(3/2), da es kein Ordnungsproblem gibt das Pluszeichen und das Multiplikationszeichen, sodass Sie indexOf() verwenden können. 2. Multiplikation und Division befinden sich in der inneren Beurteilungsebene, und Addition und Subtraktion befinden sich in der äußeren Beurteilungsebene. Da Multiplikation und Division zuerst berechnet werden müssen, erhält das innere Urteil zuerst die vorzeichenlose Zeichenfolge und berechnet sie zuerst. Was meiner Meinung nach an diesem Rechner optimiert werden kann: (Sie können auch darüber nachdenken)1 Wenn Sie Ereignisse an Schaltflächen binden, verwenden Sie den Ereignis-Proxy-Modus.2. Welche verwendeten Attribute oder Methoden müssen Browserkompatibilitätsprobleme berücksichtigen?
So verwenden Sie Vuex zur Implementierung der Menüverwaltung
So verwenden Sie Vue zur Entwicklung von Baumkomponenten
Detaillierte Interpretation der neuen Funktionen von Angular5.1
So implementieren Sie die Gulp-Verpackung mit NodeJS
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine Webversion des Taschenrechners in JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Unterschiedliche JavaScript -Motoren haben unterschiedliche Auswirkungen beim Analysieren und Ausführen von JavaScript -Code, da sich die Implementierungsprinzipien und Optimierungsstrategien jeder Engine unterscheiden. 1. Lexikalanalyse: Quellcode in die lexikalische Einheit umwandeln. 2. Grammatikanalyse: Erzeugen Sie einen abstrakten Syntaxbaum. 3. Optimierung und Kompilierung: Generieren Sie den Maschinencode über den JIT -Compiler. 4. Führen Sie aus: Führen Sie den Maschinencode aus. V8 Engine optimiert durch sofortige Kompilierung und versteckte Klasse.

Zu den Anwendungen von JavaScript in der realen Welt gehören die serverseitige Programmierung, die Entwicklung mobiler Anwendungen und das Internet der Dinge. Die serverseitige Programmierung wird über node.js realisiert, die für die hohe gleichzeitige Anfrageverarbeitung geeignet sind. 2. Die Entwicklung der mobilen Anwendungen erfolgt durch reaktnative und unterstützt die plattformübergreifende Bereitstellung. 3.. Wird für die Steuerung von IoT-Geräten über die Johnny-Five-Bibliothek verwendet, geeignet für Hardware-Interaktion.

Ich habe eine funktionale SaaS-Anwendung mit mehreren Mandanten (eine EdTech-App) mit Ihrem täglichen Tech-Tool erstellt und Sie können dasselbe tun. Was ist eine SaaS-Anwendung mit mehreren Mietern? Mit Multi-Tenant-SaaS-Anwendungen können Sie mehrere Kunden aus einem Sing bedienen

Dieser Artikel zeigt die Frontend -Integration mit einem Backend, das durch die Genehmigung gesichert ist und eine funktionale edtech SaaS -Anwendung unter Verwendung von Next.js. erstellt. Die Frontend erfasst Benutzerberechtigungen zur Steuerung der UI-Sichtbarkeit und stellt sicher, dass API-Anfragen die Rollenbasis einhalten

JavaScript ist die Kernsprache der modernen Webentwicklung und wird für seine Vielfalt und Flexibilität häufig verwendet. 1) Front-End-Entwicklung: Erstellen Sie dynamische Webseiten und einseitige Anwendungen durch DOM-Operationen und moderne Rahmenbedingungen (wie React, Vue.js, Angular). 2) Serverseitige Entwicklung: Node.js verwendet ein nicht blockierendes E/A-Modell, um hohe Parallelitäts- und Echtzeitanwendungen zu verarbeiten. 3) Entwicklung von Mobil- und Desktop-Anwendungen: Die plattformübergreifende Entwicklung wird durch reaktnative und elektronen zur Verbesserung der Entwicklungseffizienz realisiert.

Zu den neuesten Trends im JavaScript gehören der Aufstieg von Typenkripten, die Popularität moderner Frameworks und Bibliotheken und die Anwendung der WebAssembly. Zukunftsaussichten umfassen leistungsfähigere Typsysteme, die Entwicklung des serverseitigen JavaScript, die Erweiterung der künstlichen Intelligenz und des maschinellen Lernens sowie das Potenzial von IoT und Edge Computing.

JavaScript ist der Eckpfeiler der modernen Webentwicklung. Zu den Hauptfunktionen gehören eine ereignisorientierte Programmierung, die Erzeugung der dynamischen Inhalte und die asynchrone Programmierung. 1) Ereignisgesteuerte Programmierung ermöglicht es Webseiten, sich dynamisch entsprechend den Benutzeroperationen zu ändern. 2) Die dynamische Inhaltsgenerierung ermöglicht die Anpassung der Seiteninhalte gemäß den Bedingungen. 3) Asynchrone Programmierung stellt sicher, dass die Benutzeroberfläche nicht blockiert ist. JavaScript wird häufig in der Webinteraktion, der einseitigen Anwendung und der serverseitigen Entwicklung verwendet, wodurch die Flexibilität der Benutzererfahrung und die plattformübergreifende Entwicklung erheblich verbessert wird.

Python eignet sich besser für Datenwissenschaft und maschinelles Lernen, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python ist bekannt für seine prägnante Syntax- und Rich -Bibliotheks -Ökosystems und ist für die Datenanalyse und die Webentwicklung geeignet. 2. JavaScript ist der Kern der Front-End-Entwicklung. Node.js unterstützt die serverseitige Programmierung und eignet sich für die Entwicklung der Vollstapel.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Dreamweaver CS6
Visuelle Webentwicklungstools

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.