Heim >Web-Frontend >js-Tutorial >So führen Sie eine erzwungene Typkonvertierung in Javascript durch
Coercion-Methode: 1. Verwenden Sie die Methode ToString(), ToNumber() oder ToBoolean(). 2. Verwenden Sie die Methode String(), Number() oder Boolean(). 3. Verwenden Sie den Operator „+“ oder „-“. . Verwenden Sie Anweisungen wie „if()“ und „while()“.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Für gewöhnliche Objekte wird die Methode Object.prototype.toString() aufgerufen, sofern Sie die toString-Methode nicht selbst definieren Hat Ihre eigene toString-Methode, die Stringifizierung ruft diese Methode auf und verwendet ihren Rückgabewert.
2.ToNumber
Für Basistypen wird true in 1 umgewandelt, false wird in 0 umgewandelt;
let a = { valueOf:function(){ return "42"; } }; let b = { toString:function(){ return "42"; } }; let c = [4,2]; c.toString = function(){ return this.join(""); //"42" }; Number(a); //42 Number(b); //42 Number(c); //42 Number(''); //0 Number([]); //0 Number(["abc"];//NaN
Werte in JavaScript können in zwei Kategorien unterteilt werden: Werte, die auf „falsch“ erzwungen werden können, und Werte, die auf „wahr“ erzwungen werden können. Falscher Wert:
undefiniert
let a1 = new Boolean( false ); let b1 = new Number( 0 ); let c1 = new String( "" ); let d1 = Boolean(a1 && b1 && c1); //true let a2 = []; let b2 = {}; let c2 = function(){}; let d2 = Boolean(a2 && b2 && c2); //true
2. Erzwungene Typkonvertierung anzeigen
Die Konvertierung zwischen Zeichenfolgen und Zahlen erfolgt über String(.. ) und
Number(..)sind zwei integrierte Funktionen. Zusätzlich zu String(..) und Number(..) gibt es noch andere Möglichkeiten, eine explizite Konvertierung zwischen Strings und Zahlen zu erreichen:
let a = 42; let b = a.toString(); let c = "3.14"; let d = +c; b; // "42" d; // 3.14a.toString() ist explizit, beinhaltet aber eine implizite Konvertierung. Da toString() nicht mit primitiven Werten wie 42 funktioniert, erstellt die JavaScript-Engine automatisch ein Wrapper-Objekt für 42 und ruft dann toString() für dieses Objekt auf. Diese explizite Konvertierung enthält eine implizite Konvertierung.
2. Explizite Konvertierung in Boolean
let a = "0";
let b = [];
let c = {};
let d = "";
let e = 0;
let f = null;
let g;
Boolean( a ); // true
Boolean( b ); // true
Boolean( c ); // true
Boolean( d ); // false
Boolean( e ); // false
Boolean( f ); // false
Boolean( g ); // false
Obwohl Boolean(..) explizit ist, wird es nicht häufig verwendet. Die gebräuchlichste Methode der expliziten Umwandlung in Boolesche Werte ist!!
kann sowohl für die numerische Addition als auch für die Zeichenfolgenverkettung verwendet werden.
Wenn einer der Operanden von + eine Zeichenfolge ist (oder eine Zeichenfolge erhalten, indem Sie die abstrakte ToPrimitive-Operation darauf aufrufen), führen Sie die Aktion aus String-Verkettung; andernfalls digitale Addition durchführen. Da die valueOf()-Operation des Arrays keinen einfachen Grundwert erhalten kann, ruft sie stattdessen toString() auf. Die beiden Arrays im Beispiel unten werden also zu „1,2“ und „3,4“. + Verketten Sie sie und geben Sie „1,23,4“ zurück.
let a = "0"; let b = []; let c = {}; let d = ""; let e = 0; let f = null; let g; !!a; // true !!b; // true !!c; // true !!d; // false !!e; // false !!f; // false !!g; // false
let a = "42"; let b = "0"; a + b; // "420" let c = 42; let d = 0; c + d; // 42 let x = [1,2]; let y = [3,4]; x + y; // "1,23,4"a + „“ (implizit) und den vorherigen String(a) (explizit). Es gibt eine subtiler Unterschied, der beachtet werden muss.
Gemäß den Regeln für abstrakte ToPrimitive-Operationen ruft a + „“ die valueOf()-Methode für a auf und konvertiert dann den Rückgabewert über die abstrakte ToString-Operation in eine Zeichenfolge. String(a) ruft ToString() direkt auf. Sie geben schließlich Zeichenfolgen zurück, aber wenn a ein Objekt und keine Zahl ist, kann das Ergebnis anders ausfallen a zu einer Zahl. Sie können auch ein * 1 und ein /1 verwenden, da diese beiden Operatoren nur für Zahlen gelten, eine solche Verwendung ist jedoch weniger verbreitet. let a = 42;
let b = a + "";
b; // "42"
2 Implizite Umwandlung in boolesche Werte wird in den folgenden Situationen auftreten:
(1) Bedingte Ausdrücke in if (..)-Anweisungen. (2) Der bedingte Ausdruck (zweiter) in der for ( .. ; .. ; .. )-Anweisung.
(3) Bedingte Ausdrücke in while (..)- und do..while(..)-Schleifen. (4) :Bedingter Urteilsausdruck in.
(5) Der Operand auf der linken Seite des logischen Operators || (logisches ODER) und && (logisches UND) (als bedingter Ausdruck).
Im obigen Fall werden nicht-boolesche Werte implizit in boolesche Werte umgewandelt, wobei die zuvor eingeführten Regeln für abstrakte ToBoolean-Operationen befolgt werden.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Einführung in die Programmierung! !
Das obige ist der detaillierte Inhalt vonSo führen Sie eine erzwungene Typkonvertierung in Javascript durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!