Maison  >  Article  >  interface Web  >  Interprétation détaillée de la conversion de type implicite causée par les doubles signes égaux en JavaScript (tutoriel graphique)

Interprétation détaillée de la conversion de type implicite causée par les doubles signes égaux en JavaScript (tutoriel graphique)

亚连
亚连original
2018-05-21 11:19:101141parcourir

La conversion provoquée par le jugement == en JavaScript déclenchera une série d'étapes d'exécution de l'interpréteur. Ensuite, nous expliquerons en détail la conversion de type implicite provoquée par le double signe égal en JavaScript. it

Introduction

L'instruction if devrait être une instruction utilisée plus souvent par les programmeurs Plusieurs fois, si un jugement est requis, l'instruction if utilise généralement un double signe égal. pour juger les deux éléments avant et après. Est-ce cohérent ? Si c'est cohérent, la valeur de retour est vraie, puis l'instruction suivante est exécutée. La conversion de type implicite mentionnée dans cet article fait référence à la conversion provoquée par ==. Pour donner un exemple simple, le double signe égal n'est pas le signe congru. Le signe congru est "===" et trois signes égaux. L'instruction "1" == 1, alors généralement la chaîne précédente "1" est convertie en. Numéro 1, puis comparez. A travers cet exemple, vous devez comprendre ce qu'est la conversion de type implicite !

Étapes de conversion de type implicite

1. Vérifiez d'abord s'il y a NaN avant et après le double signe égal. S'il y a NaN, il retournera toujours faux.

2. Vérifiez s'il y a un booléen avant ou après le double signe égal. S'il y a un booléen, convertissez le booléen en nombre. (faux vaut 0, vrai vaut 1)

3. Vérifiez ensuite s'il y a une chaîne avant et après le double signe égal :

1. objet, et l'objet utilise toString() ou valueOf() pour la conversion ;
2. L'autre partie est un nombre, et la chaîne est convertie en nombre (déjà donné l'exemple)
3. party est une chaîne, comparaison directe;
4. D'autres renvoient false
IV . S'il s'agit d'un nombre et que l'autre partie est un objet, l'objet utilise valueOf() ou toString() pour la comparaison. false

5. Null et indéfini ne seront pas convertis en type, mais ils sont égaux

Assurez-vous de garder à l'esprit la séquence de conversion ci-dessus. Les questions de type se posent souvent lors des entretiens.

Méthode .toString() et méthode .valueOf() Conversion numérique

Normalement, nous pensons que pour convertir un objet en chaîne, vous devez appeler la méthode toString(), et convertir à un nombre, vous devez appeler la méthode valueOf(), mais ce n'est pas si simple lorsqu'elle est réellement appliquée. Voir l'exemple de code suivant :

var obj = {
 webName: "haorooms前端博客",
 url:"www.jb51.net"
}
console.log(obj.toString()); //[object Object]

De même, regardons la méthode valueOf() :

var arr = [1, 2, 3];
console.log(arr.valueOf());//[1, 2, 3]

From Comme le montre le code ci-dessus, la méthode valueOf() ne convertit pas l'objet en un nombre qui reflète cet objet. Au lieu de cela, nous utilisons toString()

var arr = [1, 2, 3];
console.log(arr.toString());//1,2,3

Remarque : de nombreux amis pensent que pour convertir en chaîne, vous devez d'abord appeler la méthode toString(). En fait, c'est une mauvaise compréhension. procédez de cette façon et appelez toString(). Les méthodes peuvent être converties en chaînes, mais la conversion d'une chaîne ne nécessite pas nécessairement d'appeler d'abord la méthode toString().

Jetons un coup d'œil au code suivant :

var arr = {};
arr.valueOf = function () { return 1; }
arr.toString = function () { return 2; }
console.log(arr == 1);//true

var arr = {};
arr.valueOf = function () { return []; }
arr.toString = function () { return 1; }
console.log(arr == 1);//true

Nous pouvons voir à partir du code ci-dessus que la conversion appelle d'abord valueOf() Si valueOf() n'est pas une valeur numérique, alors toString sera appelé Convert!

var arr = {};
arr.valueOf = function () { return "1"; }
arr.toString = function () { return "2"; }
console.log(arr == "1");//true

Si "1" est une chaîne, alors la première chose qu'elle appelle est valueOf().

var arr = [2];
console.log(arr + "1");//21

Dans l'exemple ci-dessus, toString() est appelé car arr.toString() est suivi de 2.

Le processus de conversion est comme ceci. Premièrement, arr appellera d'abord la méthode valueOf(), mais cette méthode de nombres est simplement héritée et n'a pas été réécrite (bien sûr, cette réécriture n'est pas implémentée par nous). La valeur de retour est L'objet tableau lui-même n'est pas un type valeur, donc la méthode toString() est appelée à la place, atteignant ainsi l'objectif de conversion en chaîne.

Résumé

La plupart des objets sont implicitement convertis en un type valeur en essayant d'abord d'appeler la méthode valueOf(). Mais l'objet Date est une exception. Les méthodes valueOf() et toString() de cet objet ont été soigneusement réécrites. La valeur par défaut est d'appeler la méthode toString(), par exemple en utilisant l'opérateur + s'il s'agit d'une autre opération arithmétique. environnements, elle sera appelée à la place.

var date = new Date();
console.log(date + "1"); //Sun Apr 17 2014 17:54:48 GMT+0800 (CST)1
console.log(date + 1);//Sun Apr 17 2014 17:54:48 GMT+0800 (CST)1
console.log(date - 1);//1460886888556
console.log(date * 1);//1460886888557

J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir.

Articles associés :

Analyse approfondie de l'objet arguments en JavaScript (tutoriel graphique)

Introduction aux bases de JavaScript_object (à lire absolument) (Tutoriel graphique)

Interprétation détailléejavascript Piloté par les événements client (Tutoriel graphique)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

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