Heim >Web-Frontend >js-Tutorial >So führen Sie eine erzwungene Typkonvertierung in Javascript durch

So führen Sie eine erzwungene Typkonvertierung in Javascript durch

青灯夜游
青灯夜游Original
2021-04-19 14:27:414891Durchsuche

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()“.

So führen Sie eine erzwungene Typkonvertierung in Javascript durch

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

1. Typkonvertierungsregeln

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;

    undefiniert wird in NaN umgewandelt und null wird in 0 umgewandelt
  • . Der Objekttyp wird zunächst in einen Basistypwert konvertiert. Wenn ein nicht numerischer Basistypwert zurückgegeben wird, wird die Konvertierung in eine Zahl gemäß den Basistypkonvertierungsregeln erzwungen. Um einen Wert in den entsprechenden primitiven Typwert umzuwandeln, prüft die abstrakte Operation ToPrimitive zunächst, ob der Wert über eine valueOf()-Methode verfügt. Wenn ein Basistypwert vorhanden ist und dieser zurückgegeben wird, verwenden Sie diesen Wert für die Umwandlung. Wenn nicht, verwenden Sie den Rückgabewert von toString() (falls vorhanden), um die Umwandlung durchzuführen. Wenn weder valueOf() noch toString() einen Basistypwert zurückgeben, wird ein TypeError generiert.
  • 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
  • 3.ToBoolean

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

null
  • falsch
  • +0, -0, NaN
  • ""
  • Wahrer Wert:
  • Mit Ausnahme der obigen Liste können alle als wahre Werte verstanden werden . Objekte sind alle wahre Werte
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

1. Konvertierung zwischen Zeichenfolgen und Zahlen 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.14
a.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!!

(1) Der +-Operator

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

Sie können den +-Operator für die Zeichenfolgenkonvertierung verwenden, + die Zahl und die leere Zeichenfolge „“, um sie in eine Zeichenfolge umzuwandeln
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn