Lors de l'exécution +, -, *, /, == ,! =, etc. En javascript, si les types de valeur des deux côtés de l'opérateur sont incompatibles avec le type attendu, JavaScript convertira les valeurs des deux côtés de l'opérateur en type attendu avant d'effectuer des opérations. Lorsque le type de valeur attendu est String, JavaScript convertira la valeur en chaîne; Lorsque le type de valeur attendu est le nombre, JavaScript convertira la valeur en nombre (s'il ne peut pas être converti en valeur numérique, il renverra NAN). Par exemple:
La copie de code est la suivante:
console.log (10 + "chats"); // 10 chats
console.log (10 * "Cats"); // nan, "Cats" sera converti en nan
console.log (10 + "2"); // 102
console.log (10 - "2"); // 8
console.log (10 / "2"); // 5
console.log (10 * "2"); // 20
console.log (10 * "2"); // 20
console.log ("10" * "2"); // 20
Règles de conversion de type de valeur
Pour les règles de conversion de valeur dans JavaScript, veuillez vous référer au tableau 3-2. Conversions de type javascript dans le livre "JavaScript The Definitive Guide". Certains des endroits les plus remarquables sont:
1. Le résultat est nan après une conversion non définie en nombre.
2. Le résultat est 0 après avoir converti Null en nombre.
3. Le résultat est 0 après la conversion de la chaîne vide "" en numéro.
4. Le résultat est "0" après la conversion-0 en chaîne.
5. Le résultat est 0 après avoir converti le tableau vide [] en nombre.
6. Le tableau avec un seul membre de nombre (tel que [9]) est converti en nombre et le résultat est la valeur du nombre (9).
Lorsque JavaScript convertit la chaîne en numéro, il y a deux règles plus intéressantes:
1. JavaScript supprimera les caractères de l'espace au début et à la fin de la chaîne avant de le convertir, de sorte que des chaînes comme "42" peuvent être converties avec succès au numéro 42.
2. Après avoir supprimé les caractères des espaces au début et à la fin, si la chaîne contient toujours des caractères non numériques, la chaîne sera convertie en NAN. Par exemple: "3 m" sera converti en nan.
Exemple:
La copie de code est la suivante:
console.log (10 * "3"); // 30
console.log (10 * "3 m"); // nan, "3 m" sera converti en nan
Conversion et comparaison du type de valeur
En JavaScript, l'utilisation de l'opérateur égal (==) implique la conversion de type de valeur: si les types de valeur des deux côtés de l'opérateur == sont incohérents, alors JS les convertira en types cohérents avant de porter des jugements. Soyez prudent que deux types de valeurs différents peuvent être équivalents après la conversion de type, mais cela ne signifie pas que le résultat de l'utilisation de l'opérateur == pour eux doit être vrai. Un exemple simple n'est pas défini et faux: le résultat non défini après convertissage non défini en type booléen est exactement faux, mais en fait le résultat de non défini == false est faux.
Conversion de type explicite
La conversion de type automatique à l'aide de JavaScript est très pratique, mais elle peut facilement causer des problèmes tels que la maintenabilité du code. Pour rendre le code du programme plus clair et moins ambiguïté, les conversions de type explicite sont parfois utilisées dans les programmes JS:
La copie de code est la suivante:
Numéro ("3") // 3
String (false) // "false"
Booléen ([]) // vrai
Dans la plupart des cas, le résultat de la conversion de type explicite est cohérent avec le résultat de la conversion de type automatique JS; Mais il y a un cas spécial: lorsque Null ou Undefined est automatiquement converti en objet, JS lancera une erreur de type EERROR; Mais lorsque Null ou Undefined est explicitement converti en objet, JS renverra un objet vide:
La copie de code est la suivante:
console.log (objet (non défini)); // objet vide
console.log (objet (null)); // objet vide
Dans le même temps, si le type spécifié par la conversion explicite est différent du type spécifié par la conversion automatique de JS, les résultats obtenus sont également différents. Par exemple, le résultat de Undefined == FALSE mentionné précédemment est faux; Si le type de conversion est explicitement spécifié comme booléen, le résultat est vrai:
La copie de code est la suivante:
console.log (undefined == false); // false
console.log (boolean (undefined) == boolean (false)); // true
Utilisation de la conversion de type automatique
Dans JS, la conversion automatique des types de valeur peut être utilisée pour obtenir le même effet que la conversion explicite par le biais d'opérateurs, tels que:
La copie de code est la suivante:
console.log (false + ""); // "false"
console.log (+ false); // 0
console.log (!! 3); // vrai