Si vous convertissez explicitement un certain type en un autre type via un appel de fonction ou de méthode, cela s'appelle une conversion explicite, et l'inverse est appelé une conversion de type implicite. Les mots « conversion de type d'affichage » et « conversion de type implicite » ne se trouvent pas dans Google et Wikipédia. Appelons-le ainsi.
1. Conversions de types implicites dans les opérations
1. Opérateur « + »
Copiez le code comme suit :
var a = 11, b = '22';
var c = a + b;
Ici, le moteur transformera d'abord a en chaîne "11", puis le connectera à b, qui deviendra "1122". Certaines personnes peuvent se demander pourquoi ne pas transformer b en nombre 22, puis effectuer une addition arithmétique, auquel cas c sera 33. Il n'y a aucune raison lorsque l'un des deux côtés de l'opérateur "+" est un type numérique et l'autre est un type chaîne, le moteur js stipule d'effectuer une concaténation de chaînes au lieu d'une addition arithmétique. Grâce à la fonctionnalité de l'opérateur "+", Number peut être facilement converti en String. comme
Copiez le code comme suit :
var a = 11 ;
alert(typede a); //-->numéro
une = une + '';
alert(typede a); //-->string
2. Opérateur "-"
"-" peut être un opérateur unaire (opération négative) ou un opérateur binaire (opération de soustraction). comme
Copiez le code comme suit :
var a = 11, b = '5';
var c = a - b;
alerte (type de c); //--> numéro
Contrairement au "+" ci-dessus, la chaîne b sera implicitement convertie en nombre 5 puis une soustraction arithmétique sera effectuée. Grâce à cette fonctionnalité, vous pouvez facilement convertir une chaîne en nombre
Copiez le code comme suit :
var a = '11';
une = une - '';
alert(typeof a);// -->numéro
2. Conversions de type implicites dans les instructions
1, si
Copiez le code comme suit :
var obj = {nom : 'jack'}
si(obj){
//faire plus
}
Ici, obj sera implicitement converti en type booléen
2. pendant que
Copiez le code comme suit :
var obj = {nom : 'jack'}
tandis que(obj){
//faire plus
}
Comme si
3. Tapez la conversion pendant pour in
Une conversion implicite de l'identifiant en chaîne se produit lorsqu'un littéral d'objet est défini.
Copiez le code comme suit :
var personne = {'nom':'jack',"age":20,école:'PKU'};
pour(var a en personne){
alert(a + ": " + typeof a);
}
Ici, des guillemets simples/doubles sont ajoutés respectivement au nom et à l'âge pour souligner qu'ils sont de type String, et les guillemets simples/doubles ne sont pas ajoutés à l'école. Nous parcourons les propriétés de l'objet pour voir son type. On constate que l'école est également implicitement convertie en type String.
L'index du tableau est en fait un type chaîne. C'est incroyable, mais c'est vrai. comme
Copiez le code comme suit :
var ary = [1,3,5,7];
pour(var a en ary){
alert(a + ": " + typeof a);
}
3. Conversion de type implicite lors de l'alerte
Copiez le code comme suit :
String.prototype.fn = function(){retourner ceci} ;
var a = 'bonjour';
alert(typeof a.fn()); //-->objet
alert(a.fn()); //-->bonjour
Une méthode fn est ajoutée au prototype String, qui renvoie ceci. Nous savons que cela peut être compris comme un objet d'instance de la classe actuelle, puisqu'il s'agit d'un objet, typeof a.fn() renvoie naturellement un objet.
La clé est la dernière alerte (a.fn()). Ce que renvoie a.fn() est évidemment un objet, mais il est implicitement converti en une chaîne "hello" pour l'affichage.
La même chose se produit avec les types numériques, comme
Copiez le code comme suit :
Number.prototype.fn = function(){retourner ceci} ;
var a = 10 ;
alert(typeof a.fn());//-->object
alerte(a.fn()); //-->10
a.fn() renvoie un type d'objet, mais il est implicitement converti en nombre lorsque alert(a.fn()) est utilisé.