Kernpunkte
-
Die automatische Konvertierung von
- JavaScript ist sowohl ein Vorteil als auch ein Nachteil in verschiedenen Situationen. Als Kernfunktion konvertiert es Daten in einen erwarteten Typ, wenn ein Bediener oder eine Anweisung einen bestimmten Datentyp erwartet.
- Gemäß dem Konvertierungsergebnis werden JavaScript -Werte als "wahre Werte" oder "falsche Werte" bezeichnet. Es gibt sechs falsche Werte:
false
,undefined
,null
,0
,""
,NaN
(leere Zeichenfolge) und (nicht nummer). Alle anderen Werte werden als wahr angesehen. - Wie Typumwandlungen die Bewertung beeinflussen, muss sorgfältig in Betracht gezogen werden, um Fallstricke zu vermeiden. Wenn beispielsweise die Standardwerte für optionale Parameter definiert werden, muss beispielsweise die Wahrheit bekannter Daten sichergestellt werden, um einen Fehler zu verhindern.
-
typeof
Während explizite Tests mit immer sicher sind, ist die Verwendung der automatischen Typumwandlung für Überlegungen zur Dateigröße von Vorteil, da kleinere Dateien schneller geladen werden und weniger Bandbreite verwenden. Es ist jedoch entscheidend zu verstehen, wie Programmiersprachen mit Typumwandlungen umgehen, um unerwartete Ergebnisse zu vermeiden.
Es gibt einige Ausdrücke, die in JavaScript üblich sind, aber einige Programmierpuristen werden Ihnen sagen, dass sie niemals eine gute Idee sind. Diese Ausdrücke haben gemeinsam, dass sie sich auf die automatische Konvertierung angewiesen haben - die Kernfunktionalität von JavaScript, die je nach Situation und Ihrer Sichtweise sowohl ein Vorteil als auch ein Nachteil ist.
In diesem Artikel möchte ich diese beiden Ausdrücke besonders aufmerksam machen und berücksichtigen, in welchen Fällen sie gute Ideen sind und welche keine guten Ideen sind.
if()
Der erste Ausdruck ist eine einfache
if (foo) { }
Der zweite Ausdruck ist eine variable Zuordnung mit optionalen Werten:
var x = foo || bar;
foo
Wenn die bar
und foo
in beiden Beispielen Booleschen sind, ist der Ausdruck einfach: Wenn foo
wahr ist, ist die erste Bedingung erfolgt; zu foo
, ansonsten weist x
bar
zu. x
ein Objekt, ein String oder foo
ist? Was ist, wenn undefined
und foo
unterschiedliche Datentypen sind? Um zu verstehen, wie diese Ausdrücke berechnet werden, müssen wir verstehen, wie JavaScript automatisch zwischen Datentypen umwandelt. bar
automatischer Typumwandlung
JavaScript ist eine "locker getippte" Sprache, was bedeutet, dass JavaScript, wenn ein Bediener oder eine Anweisung einen bestimmten Datentyp erwartet, automatisch Daten in diesen Typ umwandelt. Die -Anweisung im ersten Beispiel erwartet einen booleschen Wert, sodass alles, was in den Klammern definiert ist, in einen booleschen Wert umgewandelt wird. Gleiches gilt für die Aussagen if()
und while()
. do...while()
Gemäß den Ergebnissen solcher Konvertierungen (d. H. Richtig oder falsch) werden JavaScript -Werte häufig als "wahr" oder "falsche Werte" bezeichnet. Der einfachste Weg zu verstehen ist: Wenn der Wert ein falscher Wert ist, ist der Wert der wahre Wert;
(natürlich!)-
false
-
undefined
-
null
(Nummer Null) -
0
(leere Zeichenfolge) -
""
(nicht nummer) -
NaN
bemerkenswerte Ausnahmen sind "0" (Zeichenfolge Null) und alle Arten von Objekten - sie sind echte Werte - dies schließt alle
Berechnungsergebnisse wahr! (Ein wenig verwirrend, aber in der Praxis müssen Sie nie so native Werte erstellen.)
new Boolean(false)
Hinweis: Der Vergleich von zwei falschen Werten erzeugt nicht immer die Ergebnisse, die Sie möglicherweise erwarten, z. B. (
null != false
bedingte Verknüpfung
Das Beispiel, das ich Ihnen zu Beginn gezeigt habe Existenz des Elements:
Dies funktioniert immer zuverlässig, wenn die DOM -Elemente verarbeitet werden, da die DOM -Spezifikation erforderlich ist, dass Elemente, die nicht existieren, if()
. null
if (foo) { }
null
solche Bedingungen werden häufig verwendet, um
, es gibt jedoch mehrere Situationen, die ein Versagen verursachen können - d. H.
ist ein falscher Wert. Wenn es sich beispielsweise um einen booleschen Wertvar x = foo || bar;oder eine leere Zeichenfolge handelt, wird der bedingte Code nicht ausgeführt, selbst wenn
bereits definiert ist. foo
false
Was wir wollen: foo
Der Datentyp der undefinierten Parameter (und anderer Variablen) lautet "
-Palator verwenden, um den Datentyp des Parameters zu testen, und wenn
vollständig definiert ist, wird die Bedingung immer bestehen. Natürlich berechnet der Ausdruckvar element = document.getElementById("whatever"); if (element) { // 元素存在 } else { // 元素不存在 }immer noch den booleschen Wert, aber der von ihm berechnete Boolesche Wert ist das Ergebnis der
-Spression. undefined
typeof
foo
Zuordnungsverknüpfung if()
typeof
Das zweite Beispiel, das ich Ihnen zu Beginn gezeigt habe
boolesche Werte, sodass die Konvertierung und Berechnungen intern erfolgen. Wenn auf True bewertet wird, wird der Wert
zurückgegeben, andernfalls wird der Wert vonzurückgegeben. Das ist sehr nützlich.
Dieser Ausdruck wird normalerweise bei Ereignishandlern gesehen und wird verwendet, um Ereignisparameter basierend auf unterstützten Modellen zu definieren:
if (foo) { }
wird daher e
als boolescher Wert berechnet, der wahr ist (Ereignisobjekt), wenn das Ereignisparametermodell unterstützt wird, ansonsten ein falscher Wert (undefined
); Ansonsten return e
. window.event
var x = foo || bar;Daher wird jede dieser Referenzen wiederum bewertet (von links nach rechts) und die erste Berechnung wird zurückgegeben. Der erste Fall übernimmt das Standardmodell, der zweite Fall ist für Internet Explorer und der dritte Fall für Internet Explorer, wenn ein Ereignis auf einem Fensterobjekt ausgelöst werden kann (ohne die Eigenschaft
). srcElement
var element = document.getElementById("whatever"); if (element) { // 元素存在 } else { // 元素不存在 }Wenn Sie nun sicher sind, ist
foo
immer oder , und wenn die leere Zeichenfolge als undefined
behandelt werden sollte, ist der Ausdruck sicher. Aber wenn dies nicht der Fall ist, muss es als genaueren Inhalt neu definiert werden, zum Beispiel: undefined
function doStuff(foo) { if (foo) { ... } }Durch das Testen des Typs gegen "String" können wir eine Vielzahl von Fällen verarbeiten -
undefinierte Fälle und Fälle, in denen er falsch als Nicht -Stringwerte definiert wird. In diesem Fall erlauben wir auch leere Zeichenfolgen als gültige Eingabe. Wenn wir jedoch leere Zeichenfolgen ausschließen möchten, müssen wir eine zweite Bedingung hinzufügen: foo
function doStuff(foo) { if (typeof foo != "undefined") { ... } }Es gibt einige andere überraschend subtile Situationen, die Probleme verursachen können. Zum Beispiel haben wir möglicherweise eine Datumsfunktion, die einen Unix -Zeitstempel erstellt, es sei denn, der Zeitstempel der Eingabe ist optional definiert:
var x = foo || bar;Wenn die Eingabe 0 ist, fällt es fehl - da Null ein falscher Wert ist, aber auch ein gültiger Zeitstempel ist.
Allgemeine Prinzipien
Die allgemeine Lektion, die aus all dem gelernt wurde, ist einfach - Überlegen Sie, wie sich die Konvertierungen von Typen auf die Bewertung auswirken, und achten Sie darauf, nicht in die Fallen zu fallen, denen wir begegnen. Mit ordnungsgemäßer Aufmerksamkeit und Aufmerksamkeit können Sie weiterhin automatische Typumwandlungen verwenden, um Bedingungen und logische Ausdrücke gegebenenfalls zu verkürzen.Aber das wirft die Frage auf - wenn wir wissen, dass die Verwendung von
immer sicher ist, wenn es manchmal nicht sicher ist, sich auf automatische Typumwandlungen zu verlassen -, warum nicht immer typeof
ist dann klar? Wenn der Grund für die Bevorzugung einer kürzeren Grammatik einfach darauf zurückzuführen ist, dass sie schneller typisiert, ist dies ein fauler und schlampiger Grund.
Aber die Wahrheit ist, dass JavaScript normalerweise über ein öffentliches Netzwerk ausgeführt wird. In diesem Fall ist die Dateigröße wichtig. Kleinere Dateien laden schneller und verwenden weniger Bandbreite, und kleine Syntaxverknüpfungen können sich tatsächlich ansammeln.
Die Verwendung kürzerer Ausdrücke ist keine Optimierung selbst, sondern nur ein Programmierstil, der die Sprachfunktionen voll ausnutzt.
(Der FAQ-Abschnitt im Originaltext wird hier weggelassen, da der Inhalt dieses Teils schwach mit dem Thema des Artikels zusammenhängt und länger ist. Daher ist er nicht für die Aufbewahrung in Pseudooriginalwerken geeignet.)
Das obige ist der detaillierte Inhalt vonAutomatische Konvertierung in der realen Welt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

JavaandjavaScriptaredistinctuGuages: JavaisusedForenterPrisandMobileApps, während JavaScriptisforinteractivewebpages.1) Javaiscompiled, statusweit, Andrunsonjvm.2) JavaScriptisinterpretierte, dynamisch und Runsinbrowserde

JavaScript -Kerndatentypen sind in Browsern und Knoten.js konsistent, werden jedoch unterschiedlich als die zusätzlichen Typen behandelt. 1) Das globale Objekt ist ein Fenster im Browser und global in node.js. 2) Node.js 'eindeutiges Pufferobjekt, das zur Verarbeitung von Binärdaten verwendet wird. 3) Es gibt auch Unterschiede in der Leistung und Zeitverarbeitung, und der Code muss entsprechend der Umgebung angepasst werden.

JavaScriptUSESTWOTYPESOFCOMMENMENTEN: Einzelzeilen (//) und Multi-Linie (//). 1) Verwendung // Forquicknotesorsingle-Linexplanationen.2 Verwendung // ForlongerExPlanationsCompomentingingoutblocks-

Der Hauptunterschied zwischen Python und JavaScript sind die Typ -System- und Anwendungsszenarien. 1. Python verwendet dynamische Typen, die für wissenschaftliche Computer- und Datenanalysen geeignet sind. 2. JavaScript nimmt schwache Typen an und wird in Front-End- und Full-Stack-Entwicklung weit verbreitet. Die beiden haben ihre eigenen Vorteile bei der asynchronen Programmierung und Leistungsoptimierung und sollten bei der Auswahl gemäß den Projektanforderungen entschieden werden.

Ob die Auswahl von Python oder JavaScript vom Projekttyp abhängt: 1) Wählen Sie Python für Datenwissenschafts- und Automatisierungsaufgaben aus; 2) Wählen Sie JavaScript für die Entwicklung von Front-End- und Full-Stack-Entwicklung. Python ist für seine leistungsstarke Bibliothek in der Datenverarbeitung und -automatisierung bevorzugt, während JavaScript für seine Vorteile in Bezug auf Webinteraktion und Full-Stack-Entwicklung unverzichtbar ist.

Python und JavaScript haben jeweils ihre eigenen Vorteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1. Python ist leicht zu erlernen, mit prägnanter Syntax, die für Datenwissenschaft und Back-End-Entwicklung geeignet ist, aber eine langsame Ausführungsgeschwindigkeit hat. 2. JavaScript ist überall in der Front-End-Entwicklung und verfügt über starke asynchrone Programmierfunktionen. Node.js macht es für die Entwicklung der Vollstapel geeignet, die Syntax kann jedoch komplex und fehleranfällig sein.

JavaScriptisnotbuiltoncorc; Es ist angehört, dass sich JavaScriptWasdedeSthatrunsonGineoFtencninc.

JavaScript kann für die Entwicklung von Front-End- und Back-End-Entwicklung verwendet werden. Das Front-End verbessert die Benutzererfahrung durch DOM-Operationen, und die Back-End-Serveraufgaben über node.js. 1. Beispiel für Front-End: Ändern Sie den Inhalt des Webseitentextes. 2. Backend Beispiel: Erstellen Sie einen Node.js -Server.


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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)
