Maison >interface Web >js tutoriel >Introduction à la conversion de type valeur dans les astuces JavaScript_javascript

Introduction à la conversion de type valeur dans les astuces JavaScript_javascript

WBOY
WBOYoriginal
2016-05-16 16:22:46955parcourir

Lors de l'exécution d'opérations telles que -, *, /, ==, != en JavaScript, si les types de valeur sur les côtés gauche et droit de l'opérateur sont incohérents avec le type attendu, JavaScript convertira les valeurs sur des deux côtés de l'opérateur dans le type attendu. Recommencez l'opération. Lorsque le type de valeur attendu est une chaîne, JavaScript convertira la valeur en chaîne ; lorsque le type de valeur attendu est un nombre, JavaScript convertira la valeur en nombre (si elle ne peut pas être convertie en valeur numérique, NaN sera renvoyé par exemple). :

Copier le code Le code est le suivant :

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 valeur

Pour les règles de conversion de valeurs en JavaScript, veuillez vous référer au tableau 3-2 des conversions de types JavaScript dans le livre "JavaScript – The Definitive Guide". Certains des endroits les plus remarquables sont :

1. Le résultat après non défini est converti en nombre est NaN.
2. Le résultat de la conversion de null en nombre est 0.
3. Le résultat de la conversion de la chaîne vide "" en nombre est 0.
4. Le résultat après conversion de -0 en chaîne est "0".
5. Le résultat de la conversion du tableau vide [] en nombre est 0.
6. Lorsqu'un tableau avec un seul membre numérique (tel que [9]) est converti en nombre, le résultat est la valeur numérique (9).

Lorsque JavaScript convertit une chaîne en nombre, il existe deux règles intéressantes :

1. JavaScript supprimera les caractères vides au début et à la fin de la chaîne avant de la convertir, afin qu'une chaîne comme "42" puisse être convertie avec succès en nombre 42.

2. Après avoir supprimé les caractères vides au début et à la fin, si la chaîne contient encore des caractères non numériques, la chaîne sera convertie en NaN. Par exemple : « 3 m » sera converti en NaN.

Exemple :

Copier le code Le code est le suivant :

console.log(10 * " 3 ");//30
console.log(10 * "3 m");//NaN, "3 m" sera converti en NaN

Conversion et comparaison des types de valeurs

En JavaScript, l'utilisation de l'opérateur égal (==) implique une conversion de type 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 un jugement. Il convient de noter que deux valeurs de types différents peuvent être équivalentes après la conversion de type, mais cela ne signifie pas que le résultat de l'utilisation de l'opérateur == sur elles doit être vrai. Un exemple simple est indéfini et faux : après avoir converti undéfini en type booléen, le résultat s'avère faux, mais en fait le résultat de undéfini==false est faux.

Conversion de type explicite

L'utilisation de la conversion de type automatique de JavaScript est très pratique, mais elle peut aussi facilement causer des problèmes tels que la maintenabilité du code. Afin de rendre le code du programme plus clair et de réduire l'ambiguïté, une conversion de type explicite est parfois utilisée dans les programmes JS :

Copier le code Le code est le suivant :

Numéro("3")//3
Chaîne(faux)//"faux"
Booléen([])//true

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 existe un cas particulier : lorsque null ou undefined est automatiquement converti en Object, JS renvoie une erreur TypeError mais lors d'une conversion de type explicite ; Lors de la conversion de null ou d'undefined en Object, JS renverra un objet vide :
Copier le code Le code est le suivant :

console.log(Object(undefined));//objet vide
console.log(Object(null));//objet vide

Dans le même temps, si le type spécifié par conversion explicite est différent du type spécifié par conversion automatique JS, les résultats obtenus seront é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 sera vrai :
Copier le code Le code est le suivant :

console.log(undefined == false);//false
console.log(Boolean(undefined) == Boolean(false));//true

Utilisation de la conversion de type automatique

En JS, vous pouvez utiliser la conversion automatique des types de valeur et utiliser des opérateurs pour obtenir le même effet qu'une conversion explicite, tels que :

Copier le code Le code est le suivant :

console.log(false "");//"false"
console.log(false);//0
console.log(!!3);//true
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn