Introduction
Si les déclarations doivent être des déclarations que les programmeurs utilisent plus souvent, et ils doivent souvent faire des jugements. Si les instructions utilisent généralement des signes doubles pour déterminer si les deux éléments avant et après sont cohérents. S'ils sont cohérents, le retour est vrai, puis exécutez l'instruction suivante. Sinon, exécutez d'autres instructions. La conversion de type implicite mentionné dans cet article fait référence à la conversion causée par ==. Pour donner un exemple simple, un signe double égal n'est pas un signe égal total, un signe égal total est "===" trois signes égaux, et l'instruction "1" == 1, puis en général, la chaîne précédente "1" est convertie en nombre 1 puis comparé. Grâce à cet exemple, vous devez comprendre ce qu'est la conversion de type implicite!
Étapes de conversion de type implicite
1. Tout d'abord, vérifiez s'il y a nan avant et après le double signe égal. Si nan existe, tous reviennent faux.
2. Voyons s'il y a des booléens avant et après le double signe égal. S'il y a booléen, convertissez le booléen en un nombre. (False est 0, vrai est 1)
3. Vérifiez ensuite s'il y a des chaînes avant et après le double signe égal. Il y a trois situations:
1. L'autre partie est un objet, et l'objet est converti à l'aide de toString () ou de valeur de ();
2. L'autre partie est un nombre et la chaîne est convertie en un nombre; (Un exemple a déjà été donné)
3. L'autre partie est une chaîne, comparez directement;
4. Les autres reviennent faux
4. S'il s'agit d'un nombre, l'autre partie est un objet. L'objet prend VALEUR OF () ou TOSTRING () pour la comparaison, et tous les autres objets renvoient faux.
5. NULL, UNDEFINED NE PAS ENCROIRE LA CONVERSION DE TYPE, mais ils sont égaux
L'ordre de conversion ci-dessus doit être gardé à l'esprit. Les types de questions se produisent souvent lors des entretiens.
Conversion numérique de la méthode .toString () et de la méthode .valueof ()
Habituellement, nous pensons que la conversion d'un objet en une chaîne nécessite d'appeler la méthode toString () et de la convertir en un nombre nécessite d'appeler la méthode de valeur de (), mais ce n'est pas aussi simple lorsqu'il est réellement appliqué. Voir l'exemple de code suivant:
var obj = {webname: "Blog frontal haorooms", URL: "www.vevb.com"} console.log (obj.toString ()); // [objet objet]De même, regardons à nouveau la méthode de valeur de ():
var arr = [1, 2, 3]; console.log (arr.valueof ()); // [1, 2, 3]
Comme on peut le voir à partir du code ci-dessus, la méthode de valeur de () ne convertit pas l'objet en un nombre qui reflète l'objet. Au lieu de cela, nous utilisons ToString ()
var arr = [1, 2, 3]; console.log (arr.tostring ()); // 1,2,3
Remarque: Beaucoup d'amis croient que lors de la conversion en une chaîne, vous devez d'abord appeler la méthode toString (). En fait, c'est une mauvaise compréhension. Nous devons comprendre de cette façon. L'appel de la méthode toString () peut être converti en une chaîne, mais cela ne signifie pas nécessairement que la conversion d'une chaîne est d'abord d'appeler la méthode toString ().
Regardons le code suivant:
var arr = {}; arr.valueof = function () {return 1; } arr.toString = function () {return 2; } console.log (arr == 1); // truevar arr = {}; arr.valueof = function () {return []; } arr.toString = function () {return 1; } console.log (arr == 1); // trueNous pouvons voir à partir du code ci-dessus que le premier appel à la valeur () pour la conversion. Si ValueOf () n'est pas une valeur numérique, ToString sera appelé à la conversion!
var arr = {}; arr.valueof = fonction () {return "1"; } arr.toString = function () {return "2"; } console.log (arr == "1"); // trueSi "1" est une chaîne, alors la première chose qu'il appelle ValueOf ().
var arr = [2]; console.log (arr + "1"); // 21
Dans l'exemple ci-dessus, toString () est appelé; Parce que arr.tostring () est suivi de 2.
Le processus de conversion est comme ça. Premièrement, ARR appellera d'abord la méthode de valeur de (), mais cette méthode du numéro est simplement héritée et non réécrite (bien sûr, cette réécriture n'est pas implémentée par nous). La valeur de retour est l'objet Array lui-même, pas un type de valeur, nous appelons donc la méthode toString (), atteignant ainsi le but de se convertir en chaîne.
résumé
La plupart des objets se convertissent implicitement en types de valeur sont la première tentative d'appeler la méthode de valeur de (). Cependant, l'objet date est une exception. Les méthodes de valeur de () et toString () de cet objet ont été soigneusement réécrites. La valeur par défaut consiste à appeler la méthode toString (), comme l'utilisation de l'opérateur +. S'il se trouve dans d'autres environnements de fonctionnement arithmétique, la méthode de valeur de () sera appelée à la place.
var date = new Date (); console.log (date + "1"); // dimanche 17 avril 2014 17:54:48 GMT + 0800 (CST) 1CONSOLE.LOG (DATE + 1); // 1460886888556CONSOLE.LOG (DATE * 1); // 1460888888557