Suche…


Bemerkungen

In einigen Sprachen müssen Sie vorab festlegen, welche Art von Variablen Sie deklarieren. JavaScript tut das nicht; es wird versuchen, das selbst herauszufinden. Manchmal kann dies zu unerwartetem Verhalten führen.

Wenn wir das folgende HTML verwenden

<span id="freezing-point">0</span>

Wenn Sie den Inhalt über JS abrufen, wird er nicht in eine Zahl konvertiert, auch wenn Sie dies erwarten können. Wenn wir das folgende Snippet verwenden, kann man erwarten, dass boilingPoint 100 . JavaScript konvertiert jedoch moreHeat in eine Zeichenfolge und verkettet die beiden Zeichenfolgen. das Ergebnis wird 0100 .

var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;

Wir können dies beheben, indem Sie freezingPoint explizit in eine Zahl konvertieren.

var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;

In der ersten Zeile konvertieren wir "0" (die Zeichenfolge) vor dem Speichern in 0 (die Zahl). Nach dem Hinzufügen erhalten Sie das erwartete Ergebnis ( 100 ).

Konvertieren einer Zeichenfolge in eine Zahl

Number('0') === 0

Number('0') wandelt die Zeichenfolge ( '0' ) in eine Zahl ( 0 ) um

Eine kürzere, aber weniger klare Form:

+'0' === 0

Der unary + -Operator macht nichts mit Zahlen, konvertiert jedoch alles andere in eine Zahl.
Interessanterweise ist +(-12) === -12 .

parseInt('0', 10) === 0

parseInt('0', 10) konvertiert die Zeichenfolge ( '0' ) in eine Zahl ( 0 ), vergessen Sie nicht das zweite Argument, das Radix ist. Wenn nicht angegeben, kann parseInt eine Zeichenfolge in eine falsche Zahl konvertieren.

Eine Zahl in einen String umwandeln

String(0) === '0'

String(0) konvertiert die Zahl ( 0 ) in einen String ( '0' ).

Eine kürzere, aber weniger klare Form:

'' + 0 === '0'

Doppelte Verneinung (!! x)

Die doppelte negation !! ist weder ein bestimmter JavaScript-Operator noch eine spezielle Syntax, sondern nur eine Folge von zwei Negationen. Es wird verwendet , um den Wert eines beliebigen Typs in seinem entsprechenden konvertieren true oder false Booleschen Wert je nachdem , ob es truthy oder falsy ist.

!!1            // true
!!0            // false
!!undefined    // false
!!{}           // true
!![]           // true

Die erste Negation wandelt jeden Wert in false wenn er wahr ist, und in true wenn er falsch ist . Die zweite Negation arbeitet dann mit einem normalen booleschen Wert. Zusammen konvertieren sie jeden Wahrheitswert in true und jeden Falschwert in false .

Viele Fachleute halten die Verwendung dieser Syntax jedoch für inakzeptabel und empfehlen einfachere Alternativen, auch wenn sie länger schreiben:

x !== 0        // instead of !!x in case x is a number
x != null      // instead of !!x in case x is an object, a string, or an undefined

Die Verwendung von !!x wird aus folgenden Gründen als schlechte Praxis betrachtet:

  1. Stilistisch sieht es vielleicht wie eine besondere Spezialsyntax aus, während es tatsächlich nur zwei aufeinanderfolgende Negationen mit impliziter Typkonvertierung durchführt.
  2. Es ist besser, Informationen zu den in Variablen und Eigenschaften gespeicherten Wertetypen durch den Code bereitzustellen. Zum Beispiel sagt x !== 0 , dass x wahrscheinlich eine Zahl ist, wohingegen !!x Lesern des Codes keinen solchen Vorteil vermittelt.
  3. Die Verwendung von Boolean(x) ermöglicht ähnliche Funktionen und ist eine explizitere Konvertierung des Typs.

Implizite Konvertierung

JavaScript versucht, die Variablen bei Verwendung automatisch in geeignetere Typen zu konvertieren. Es wird normalerweise empfohlen, Konvertierungen explizit durchzuführen (siehe andere Beispiele), aber es ist dennoch zu wissen, welche Konvertierungen implizit erfolgen.

"1" + 5 === "15" // 5 got converted to string.
1 + "5" === "15" // 1 got converted to string.
1 - "5" === -4 // "5" got converted to a number.
alert({}) // alerts "[object Object]", {} got converted to string.
!0 === true // 0 got converted to boolean
if ("hello") {} // runs, "hello" got converted to boolean.
new Array(3) === ",,"; // Return true. The array is converted to string - Array.toString();

Einige der schwierigeren Teile:

!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.

Eine Zahl in einen Boolean konvertieren

Boolean(0) === false

Boolean(0) konvertiert die Zahl 0 in ein boolesches false .

Eine kürzere, aber weniger klare Form:

!!0 === false

Umwandlung eines Strings in einen Boolean

So konvertieren Sie eine Zeichenfolge in eine boolesche Verwendung

Boolean(myString)

oder die kürzere, aber weniger klare Form

!!myString 

Alle Zeichenfolgen mit Ausnahme der leeren Zeichenfolge (der Länge Null) werden als Boolesche Werte zu true ausgewertet.

Boolean('') === false   // is true
Boolean("") === false   // is true
Boolean('0') === false  // is false
Boolean('any_nonempty_string') === true // is true

Ganzzahl zum Float

In JavaScript werden alle Zahlen intern als Floats dargestellt. Dies bedeutet, dass Sie lediglich Ihre Ganzzahl als Float verwenden müssen, um sie zu konvertieren.

Float to Integer

Um ein Float in eine Ganzzahl zu konvertieren, bietet JavaScript mehrere Methoden.

Die floor Funktion gibt die erste Ganzzahl zurück, die kleiner oder gleich dem Float ist.

Math.floor(5.7); // 5

Die ceil Funktion gibt die erste Ganzzahl zurück, die größer oder gleich dem Float ist.

Math.ceil(5.3); // 6

Die round Funktion rundet den Schwimmer ab.

Math.round(3.2); // 3
Math.round(3.6); // 4
6

Truncation ( trunc ) entfernt die Dezimalzahlen aus dem Float.

Math.trunc(3.7); // 3

Beachten Sie den Unterschied zwischen Abschneiden ( trunc ) und floor :

Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3

Umwandlung von String in Float

parseFloat akzeptiert einen String als Argument, das er in einen Float konvertiert.

parseFloat("10.01") // = 10.01

Konvertierung in Boolean

Boolean(...) konvertiert jeden Datentyp in true oder false .

Boolean("true") === true
Boolean("false") === true
Boolean(-1) === true
Boolean(1) === true
Boolean(0) === false
Boolean("") === false
Boolean("1") === true
Boolean("0") === true
Boolean({}) === true
Boolean([]) === true

Leere Zeichenfolgen und die Zahl 0 werden in false konvertiert und alle anderen in true.

Eine kürzere, aber weniger klare Form:

!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true

Diese kürzere Form nutzt die implizite Typumwandlung mithilfe des logischen NOT-Operators zweimal, wie in http://www.riptutorial.com/javascript/example/3047/double-negation----x- beschrieben.


Hier ist die vollständige Liste der booleschen Konvertierungen aus der ECMAScript-Spezifikation

  • Wenn myArg vom Typ undefined oder null ist, ist Boolean(myArg) === false
  • Wenn myArg vom Typ boolean dann Boolean(myArg) === myArg
  • wenn myArg vom Typ number dann Boolean(myArg) === false , wenn myArg ist +0 , ‑0 , oder NaN ; ansonsten true
  • wenn myArg vom Typ string dann Boolean(myArg) === false wenn myArg der leere String ist (seine Länge ist null); ansonsten true
  • wenn myArg vom Typ symbol oder object dann Boolean(myArg) === true

Werte, die als boolesche Werte in false konvertiert werden, werden als Fälschung bezeichnet (und alle anderen werden als wahr bezeichnet ). Siehe Vergleichsoperationen .

Konvertieren Sie ein Array in einen String

Array.join(separator) kann verwendet werden, um ein Array als String mit einem konfigurierbaren Separator auszugeben.

Standard (Trennzeichen = ","):

["a", "b", "c"].join() === "a,b,c"

Mit einem String-Trennzeichen:

[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"

Mit einem leeren Trennzeichen:

["B", "o", "b"].join("") === "Bob"

Array zu String mit Array-Methoden

Auf diese Weise scheint es nützlich zu sein, da Sie eine anonyme Funktion verwenden, um etwas zu vervollständigen, das Sie mit join () machen können. Wenn Sie jedoch beim Konvertieren des Arrays in einen String etwas zu den Strings machen müssen, kann dies nützlich sein.

var  arr = ['a', 'á', 'b', 'c']

function upper_lower (a, b, i) {
  //...do something here
  b = i & 1 ? b.toUpperCase() : b.toLowerCase();
  return a + ',' + b
}
arr = arr.reduce(upper_lower); // "a,Á,b,C"

Primitive-zu-Primitive-Konvertierungstabelle

Wert In String konvertiert Umgerechnet in Nummer In Boolean konvertiert
unbestimmt "nicht definiert" NaN falsch
Null "Null" 0 falsch
wahr "wahr" 1
falsch "falsch" 0
NaN "NaN" falsch
"" leerer String 0 falsch
"" 0 wahr
"2.4" (numerisch) 2.4 wahr
"test" (nicht numerisch NaN wahr
"0" 0 wahr
"1" 1 wahr
-0 "0" falsch
0 "0" falsch
1 "1" wahr
Unendlichkeit "Unendlichkeit" wahr
-Unendlichkeit "-Unendlichkeit" wahr
[] "" 0 wahr
[3] "3" 3 wahr
['ein'] "ein" NaN wahr
['a', 'b'] "a, b" NaN wahr
{} "[Objekt Objekt]" NaN wahr
Funktion(){} "Funktion(){}" NaN wahr

Fettgedruckte Werte unterstreichen die Konvertierung, die Programmierer möglicherweise überraschen

Um explizit Werte zu konvertieren, können Sie String () Number () Boolean () verwenden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow