Recherche…
Remarques
Certaines langues exigent que vous définissiez à l'avance le type de variable que vous déclarez. JavaScript ne fait pas cela; il va essayer de comprendre cela par lui-même. Parfois, cela peut créer un comportement inattendu.
Si nous utilisons le code HTML suivant
<span id="freezing-point">0</span>
Et récupérer son contenu via JS, il ne le convertira pas en un nombre, même si on pouvait s'y attendre. Si nous utilisons l'extrait suivant, on pourrait s'attendre à ce que boilingPoint
soit boilingPoint
à 100
. Cependant, JavaScript convertira moreHeat
en une chaîne et concaténera les deux chaînes; le résultat sera 0100
.
var el = document.getElementById('freezing-point');
var freezingPoint = el.textContent || el.innerText;
var moreHeat = 100;
var boilingPoint = freezingPoint + moreHeat;
Nous pouvons résoudre ce problème en convertissant explicitement freezingPoint
en un nombre.
var el = document.getElementById('freezing-point');
var freezingPoint = Number(el.textContent || el.innerText);
var boilingPoint = freezingPoint + moreHeat;
Dans la première ligne, nous convertissons "0"
(la chaîne) à 0
(le nombre) avant de le stocker. Après avoir effectué l'addition, vous obtenez le résultat attendu ( 100
).
Conversion d'une chaîne en nombre
Number('0') === 0
Number('0')
convertira la chaîne ( '0'
) en un nombre ( 0
)
Une forme plus courte mais moins claire:
+'0' === 0
L'opérateur unaire +
ne fait rien avec les nombres, mais convertit tout autre élément en nombre.
Fait intéressant, +(-12) === -12
.
parseInt('0', 10) === 0
parseInt('0', 10)
convertira la chaîne ( '0'
) en un nombre ( 0
), n'oubliez pas le second argument, qui est la base. Si ce n'est pas le cas, parseInt pourrait convertir la chaîne en mauvais numéro.
Conversion d'un nombre en chaîne
String(0) === '0'
String(0)
convertira le nombre ( 0
) en une chaîne ( '0'
).
Une forme plus courte mais moins claire:
'' + 0 === '0'
Double négation (!! x)
La double négation !!
n'est pas un opérateur JavaScript distinct ni une syntaxe spéciale mais plutôt une séquence de deux négations. Il est utilisé pour convertir la valeur de n'importe quel type à sa valeur booléenne true
ou false
appropriée, selon qu'elle est véridique ou fausse .
!!1 // true
!!0 // false
!!undefined // false
!!{} // true
!![] // true
La première négation convertit toute valeur en false
si elle est véridique et true
si elle est falsifiée . La seconde négation opère alors sur une valeur booléenne normale. Ensemble , ils convertissent une valeur truthy à true
et toute valeur falsy à false
.
Cependant, de nombreux professionnels considèrent que l'utilisation de cette syntaxe est inacceptable et recommandent de lire plus facilement les alternatives, même si elles sont plus longues à écrire:
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
L'utilisation de !!x
est considérée comme une mauvaise pratique pour les raisons suivantes:
- Sur le plan stylistique, cela peut ressembler à une syntaxe spéciale distincte, alors qu'en réalité, il ne fait rien d'autre que deux négations consécutives avec une conversion de type implicite.
- Il est préférable de fournir des informations sur les types de valeurs stockées dans les variables et les propriétés via le code. Par exemple,
x !== 0
indique quex
est probablement un nombre, alors que!!x
ne présente aucun avantage pour les lecteurs du code. - L'utilisation de
Boolean(x)
permet des fonctionnalités similaires et constitue une conversion de type plus explicite.
Conversion implicite
JavaScript tentera de convertir automatiquement les variables en types plus appropriés lors de leur utilisation. Il est généralement conseillé de faire des conversions explicitement (voir d'autres exemples), mais il est toujours utile de savoir quelles sont les conversions implicites.
"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();
Certaines des parties les plus délicates:
!"0" === false // "0" got converted to true, then reversed.
!"false" === false // "false" converted to true, then reversed.
Conversion d'un nombre en booléen
Boolean(0) === false
Boolean(0)
convertira le nombre 0
en un booléen false
.
Une forme plus courte mais moins claire:
!!0 === false
Conversion d'une chaîne en booléen
Pour convertir une chaîne en utilisation booléenne
Boolean(myString)
ou la forme plus courte mais moins claire
!!myString
Toutes les chaînes à l'exception de la chaîne vide (de longueur zéro) sont évaluées à true
comme booléennes.
Boolean('') === false // is true
Boolean("") === false // is true
Boolean('0') === false // is false
Boolean('any_nonempty_string') === true // is true
Entier à Flotter
En JavaScript, tous les nombres sont représentés en interne sous forme de flottants. Cela signifie que simplement utiliser votre entier comme un flottant est tout ce qui doit être fait pour le convertir.
Flotter à Entier
Pour convertir un flottant en un entier, JavaScript fournit plusieurs méthodes.
La fonction floor
renvoie le premier entier inférieur ou égal au float.
Math.floor(5.7); // 5
La fonction ceil
renvoie le premier entier supérieur ou égal au flottant.
Math.ceil(5.3); // 6
La fonction round
arrondit le flotteur.
Math.round(3.2); // 3
Math.round(3.6); // 4
Truncation ( trunc
) supprime les décimales du flottant.
Math.trunc(3.7); // 3
Remarquez la différence entre troncature ( trunc
) et floor
:
Math.floor(-3.1); // -4
Math.trunc(-3.1); // -3
Convertir une chaîne en float
parseFloat
accepte une chaîne comme argument qu'il convertit en float /
parseFloat("10.01") // = 10.01
Conversion en booléen
Boolean(...)
convertira tout type de données en true
ou en 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
Les chaînes vides et le nombre 0 seront convertis en false et tous les autres seront convertis en true.
Une forme plus courte mais moins claire:
!!"true" === true
!!"false" === true
!!-1 === true
!!1 === true
!!0 === false
!!"" === false
!!"1" === true
!!"0" === true
!!{} === true
!![] === true
Cette forme plus courte tire parti de la conversion de type implicite utilisant l'opérateur logique NOT deux fois, comme décrit dans http://www.riptutorial.com/javascript/example/3047/double-negation----x-
Voici la liste complète des conversions booléennes de la spécification ECMAScript
- si
myArg
de typeundefined
ounull
alorsBoolean(myArg) === false
- si
myArg
de typeboolean
alorsBoolean(myArg) === myArg
- si
myArg
de typenumber
alorsBoolean(myArg) === false
simyArg
est+0
,‑0
ouNaN
; sinontrue
- si
myArg
de typestring
alorsBoolean(myArg) === false
simyArg
est la chaîne vide (sa longueur est zéro); sinontrue
- si
myArg
de typesymbol
ouobject
alorsBoolean(myArg) === true
Les valeurs converties en false
tant que booléens sont appelées falsy (et toutes les autres sont appelées truthy ). Voir Opérations de comparaison .
Convertir un tableau en chaîne
Array.join(separator)
peut être utilisé pour générer un tableau sous forme de chaîne, avec un séparateur configurable.
Par défaut (séparateur = ","):
["a", "b", "c"].join() === "a,b,c"
Avec un séparateur de chaîne:
[1, 2, 3, 4].join(" + ") === "1 + 2 + 3 + 4"
Avec un séparateur vide:
["B", "o", "b"].join("") === "Bob"
Array to String à l'aide de méthodes de tableau
Cette façon de faire peut sembler être un outil car vous utilisez une fonction anonyme pour réaliser quelque chose que vous pouvez faire avec join (); Mais si vous devez créer quelque chose sur les chaînes pendant que vous convertissez le tableau en chaîne, cela peut être utile.
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"
Table de conversion primitive à primitive
Valeur | Converti en chaîne | Converti en nombre | Converti en booléen |
---|---|---|---|
indéfini | "indéfini" | NaN | faux |
nul | "nul" | 0 | faux |
vrai | "vrai" | 1 | |
faux | "faux" | 0 | |
NaN | "NaN" | faux | |
"" chaîne vide | 0 | faux | |
"" | 0 | vrai | |
"2.4" (numérique) | 2.4 | vrai | |
"test" (non numérique | NaN | vrai | |
"0" | 0 | vrai | |
"1" | 1 | vrai | |
-0 | "0" | faux | |
0 | "0" | faux | |
1 | "1" | vrai | |
Infini | "Infini" | vrai | |
-Infini | "-Infini" | vrai | |
[] | "" | 0 | vrai |
[3] | "3" | 3 | vrai |
['une'] | "une" | NaN | vrai |
['un B'] | "un B" | NaN | vrai |
{} | "[objet Objet]" | NaN | vrai |
fonction(){} | "fonction(){}" | NaN | vrai |
Les valeurs en gras soulignent la conversion que les programmeurs peuvent trouver surprenante
Pour convertir explicitement des valeurs, vous pouvez utiliser String () Number () Boolean ()